【发布时间】:2012-06-22 20:47:32
【问题描述】:
在 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”需要明确的包名。
我的问题是:有没有不使用中间变量的正确方法?
对此的任何帮助将不胜感激!
【问题讨论】:
-
你也可以使用
my %hash = ( function => \&someFunction ),不需要no strict 'refs'。 -
@TLP +1,我打算回答这个。
use strict;省去了所以很多麻烦... -
我可以使用它,但它添加了一些有点不可读的代码(目前)......我在运行时动态设置 functionName 的值并通过其名称调用函数。 Perl 太有趣了!
标签: perl hash reference subroutine callbyname