嗨,我需要向散列数组中的散列条目添加一个新的键值对。下面是一些不起作用的示例代码(仅使用 1 个数组条目进行了简化) 打印语句的输出仅包含 1 个条目。
my @AoH;
push @AoH, { TEST1 => 'testvalue' };
for my $hash (@AoH)
{
$hash{'TEST2'} = 'testvalue2';
print Dumper($hash);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢你。
这段代码看起来有点奇怪,所以为了在这里简要展示它,我假设它是这样完成的,但是修复代码需要做的主要事情是更改:
$hash{'TEST2'} = 'testvalue2';
Run Code Online (Sandbox Code Playgroud)
到:
$$hash{'TEST2'} = 'testvalue2';
Run Code Online (Sandbox Code Playgroud)
或者:
$hash->{'TEST2'} = 'testvalue2';
Run Code Online (Sandbox Code Playgroud)
额外的 '$' 或 '->' 取消引用散列引用 '$hash'。由于两者都不存在,它将 $hash{'TEST2'} 视为不同的变量:'%hash'(不是 '$hash')并将 'testvalue2' 分配给它。你会得到一个很好的错误信息:
Global symbol "%hash" requires explicit package name at - line XX
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用以下代码运行此代码:
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
一开始......你应该总是这样做,所以从现在开始每次都这样做。