我正在尝试以不同的方式调用Perl脚本中的子例程。在Perl中调用子例程的非标准方式
我有一组功能如下:
sub Testcase_CheckStatus {
print "TestCase_CheckStatus called\n";
}
然后我遍历一个Perl的哈希值与像“的checkStatus”键:
while (my ($k, $v) = each %test_cases) {
print "TestCase_$k","\n";
Testcase_$k();
}
基本上,我想调用的函数Testcase_CheckStatus像上面一样解析哈希键,但我得到这个错误:
Can't locate object method "Testcase_" via package "CheckStatus" (perhaps you forgot to load "CheckStatus"?) at ./main.pl line 17
什么可以我会纠正这个问题吗?有没有其他方法可以做到这一点?
注意,这下是有原因的“严格”模式不允许的。在运行时建立函数或变量名是危险和脆弱的。另一方面,wk的解决方案(使用匿名函数的散列)提供了完全相同的结果,既安全又完美。 – wazoox
重要背景阅读:“为什么使用变量作为变量名称是愚蠢的”([第1部分](http://perl.plover.com/varvarname.html),[第2部分](http:// perl)。 ,以及[第3部分](http://perl.plover.com/varvarname3.html)),作者是Mark Dominus,出色的[* Higher Order Perl *](http:// hop.perl.plover.com/)。 –