【发布时间】:2017-04-07 08:00:00
【问题描述】:
嗨,我对 perl 很陌生。我有一个包含子例程的 perl 哈希。我试图以我在网上找到的各种方式运行它。但似乎没有任何效果。 我的代码:
%hashfun = (
start=>sub { print 'hello' },
end=>sub { print 'bye' }
);
我已经尝试了以下以及更多。
print "\n $hashfun{start} \n";
导致以下输出:
CODE()
然后我尝试了
print "\n $hashfun{start}->() \n";
结果如下
CODE(
) ->()
如何解决?
【问题讨论】:
-
您不能在字符串插值中运行 coderef。
-
另请参阅
perlop中的“引用和类似引用的运算符”,了解可以在字符串中插入的内容。 -
谢谢伙计,我会@HåkonHægland
-
@simbabque 您可以在字符串中运行 coderef:
my %h=(a=>sub{'hi';}); print "${\$h{a}->()} there\n";这并不漂亮,我不一定会推荐它,但它确实有效 -
@stevieb 我在我的回答中解释了如何使用下面的数组参考来做到这一点。我确实说过你不能是故意的。您使用标量 ref 的示例更短,但仍然很难看,不应该这样做。
标签: perl subroutine dereference perl-hash