在我的 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);
}
如您所见,我目前正在检查值的数量是否相同,就好像某些东西是以“chan1Enable”而不是“channel1Enable”的形式发送的,它会丢弃该数字。
但是由于多个其他工程师编写的多个其他脚本对子例程的调用如此之多,我想找到一种方法来查找 WHICH 值不正确(例如,不要只说有一个意外的参数,而是说“chan1Enable”无效)。此外,如果多个值不正确,我想列出所有值。
最有效的方法是什么?
(我询问效率,因为该函数目前以 400 多种不同的方式被调用,并且随着应用程序的扩展可能会继续增长。)