微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐