我正在尝试复制此示例中给出的解决方案.
代码如下:
use strict;
use warnings;
my %hash = (
one => sub { print 'one'; },
two => sub { print 'two'; },
);
$hash{one};
Run Code Online (Sandbox Code Playgroud)
我在运行时遇到的错误是:
在t.pl第9行的void上下文中无用的hash元素.
我在这里做了一个运行的例子.
我哪里错了?
当它不是sub中定义的符号时,你需要告诉perl它是一个显式的代码引用,让它"运行"它 - 否则你刚刚获得了一个匿名哈希的代码引用,你试图使用它在无效的背景下.
你可以这样做:
$hash{one}->();
Run Code Online (Sandbox Code Playgroud)
要么:
&{$hash{one}}();
Run Code Online (Sandbox Code Playgroud)
要么:
$hash{one}();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |