私の Perl スクリプトには、送信される唯一の値がデフォルトとは異なる値であるため、さまざまなパラメーターのセットを使用して何百回も呼び出されるサブルーチンがあります。(順列と組み合わせの数が非常に多いことは言うまでもありません) より堅牢にするために、パラメーターのチェックを行いたいと思います。これは私のサブルーチンの縮小バージョンです (実際のバージョンには、非常に具体的で、時には長い名前を持つ多数のパラメーターがあります)。
# Obtain any parameters that differ from the defaults and send for processing
sub importantSub
{
my %params =
(
commandType => 5,
commandId => 38,
channel1Enable => 0,
channel2Enable => 0,
channel3Enable => 0,
channel4Enable => 0,
channel5Enable => 0,
channel6Enable => 0,
channel7Enable => 0,
channel8Enable => 0,
channel9Enable => 0,
channel10Enable => 0,
# This goes on for a VERY long time
@_
);
# Make sure we have exactly as many keys as we expect - verify that
# no additional parameters were added (Real version has 92)
if( keys(%params) != 92 )
{
croak("Unexpected parameter in hash!");
}
return &$privateProcessingFunction('Data Path Configuration', \%params);
}
ご覧のとおり、現在、値の数が同じかどうかを確認しています。たとえば、「channel1Enable」ではなく「chan1Enable」として何かが送信された場合、その数がスローされます。
しかし、他の複数のエンジニアによって書かれた他の複数のスクリプトからサブルーチンへの呼び出しが非常に多いため、どの値が正しくないかを見つける方法を見つけたいと思います (たとえば、予期しないパラメーターがあったとだけ言うのではなく、「chan1Enable」と言ってください。は無効です)。さらに、複数の値が間違っていた場合は、それらすべてをリストしたいと思います。
これを行う最も効率的な方法は何ですか?
(関数は現在 400 を超えるさまざまな方法で呼び出されており、アプリケーションが拡大するにつれて増加し続ける可能性があるため、効率について質問します。)