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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |