在Perl中调用子例程的非标准方式

前端之家收集整理的这篇文章主要介绍了在Perl中调用子例程的非标准方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试一种在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"}();
}

猜你在找的Perl相关文章