Thu*_*per 5 perl hash reference subroutine callbyname
在Perl中,您可以通过引用(或名称)调用函数,如下所示:
my $functionName = 'someFunction';
&$functionName();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用哈希值,如下所示:
my %hash = (
functionName => 'someFunction',
);
&$hash{functionName}();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
Run Code Online (Sandbox Code Playgroud)
我得到的错误是全局符号"$ hash"需要显式包名.
我的问题是:没有使用中间变量有没有正确的方法来做到这一点?
任何有关这方面的帮助将不胜感激!
ike*_*ami 12
这只是一个优先问题,可以通过不省略curlies来解决.你可以用
&{ $hash{functionName} }()
Run Code Online (Sandbox Code Playgroud)
或者使用替代语法:
$hash{functionName}->()
Run Code Online (Sandbox Code Playgroud)
在索引之间,->可以省略(但我不在此省略):
$hash{functionName}()
Run Code Online (Sandbox Code Playgroud)
参考:引用语法