我正在尝试一种在Perl脚本中调用子例程的不同方法.
我有一组功能如下:
sub Testcase_CheckStatus { print "TestCase_CheckStatus called\n"; }
然后我用“CheckStatus”这样的键遍历Perl哈希:
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
解决方法
以下应该可以让你做你想做的事:
while (my ($k,"\n"; &{"Testcase_$k"}(); }
但是,如果严格使用,这将不起作用.如果你使用strict,你需要在while循环中使用no strict,例如:
while (my ($k,$v) = each %test_cases) { no strict 'refs'; print "TestCase_$k","\n"; &{"Testcase_$k"}(); }