在Perl中,您可以通过引用(或名称)调用函数,如下所示:
my $functionName = 'someFunction';
&$functionName();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
我想要做的是使用Hash中的值,如下所示:
my %hash = (
functionName => 'someFunction',
);
&$hash{functionName}();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
我得到的错误是全局符号“$ hash”需要显式包名。
我的问题是:没有使用中间变量,有没有正确的方法呢? 任何有关这方面的帮助将不胜感激!
答案 0 :(得分:12)
这只是一个优先问题,可以通过不省略curlies来解决。你可以用
&{ $hash{functionName} }()
或使用替代语法:
$hash{functionName}->()
在索引之间,->
可以省略(但我不在此省略):
$hash{functionName}()