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

Perl:使用哈希值通过引用调用子例程的问题

发布时间:2020-12-15 21:46:21 所属栏目:大数据 来源:网络整理
导读:在Perl中,您可以通过引用(或名称)调用函数,如下所示: my $functionName = 'someFunction'; $functionName(); #someFunction defined here: sub someFunction { print "Hello World!"; } 我想要做的是使用哈希值,如下所示: my %hash = ( functionName = 'so
在Perl中,您可以通过引用(或名称)调用函数,如下所示:
my $functionName = 'someFunction';
    &$functionName();

    #someFunction defined here:
    sub someFunction { print "Hello World!"; }

我想要做的是使用哈希值,如下所示:

my %hash = (
        functionName => 'someFunction',);

    &$hash{functionName}();

    #someFunction defined here:
    sub someFunction { print "Hello World!"; }

我得到的错误是全局符号“$hash”需要显式包名.

我的问题是:没有使用中间变量有没有正确的方法来做到这一点?
任何有关这方面的帮助将不胜感激!

解决方法

这只是一个优先问题,可以通过不省略curlies来解决.你可以用
&{ $hash{functionName} }()

或者使用替代语法:

$hash{functionName}->()

在索引之间,– >可省略(但我不在此省略):

$hash{functionName}()

参考:Deferencing Syntax

(编辑:李大同)

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

    推荐文章
      热点阅读