如何在 perl 中的散列数组中向散列中添加新的键值对?

use*_*233 4 perl hash

嗨,我需要向散列数组中的散列条目添加一个新的键值对。下面是一些不起作用的示例代码(仅使用 1 个数组条目进行了简化) 打印语句的输出仅包含 1 个条目。

my @AoH;
push @AoH, { TEST1 => 'testvalue'  };
for my $hash (@AoH)
{
$hash{'TEST2'} = 'testvalue2';
print Dumper($hash);
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

谢谢你。

dms*_*dms 6

这段代码看起来有点奇怪,所以为了在这里简要展示它,我假设它是这样完成的,但是修复代码需要做的主要事情是更改:

$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)

一开始......你应该总是这样做,所以从现在开始每次都这样做。