加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:10:36 所属栏目:大数据 来源:网络整理
导读:我正在尝试一种在Perl脚本中调用子例程的不同方法. 我有一组功能如下: sub Testcase_CheckStatus { print "TestCase_CheckStatus calledn";} 然后我用“CheckStatus”这样的键遍历Perl哈希: while (my ($k,$v) = each %test_cases) { print "TestCase_$k"
我正在尝试一种在Perl脚本中调用子例程的不同方法.

我有一组功能如下:

sub Testcase_CheckStatus {
    print "TestCase_CheckStatus calledn";
}

然后我用“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"}();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读