如何在Perl中创建一个新的空哈希引用?

Rit*_*ose 10 perl hash reference

说我有类似的东西:

# %superhash is some predefined hash with more than 0 keys;
%hash = ();
foreach my $key (keys %superhash){
    $superhash{ $key } = %hash;
    %hash = ();
}
Run Code Online (Sandbox Code Playgroud)

superhash的所有键是否都指向相同的空哈希,%hash或者它们是不同的空哈希?

如果没有,我怎样才能确保它们指向空的哈希?

Eri*_*rom 19

您需要使用\运算符来引用多个数据类型(数组或散列),然后才能将其存储到任一个的单个插槽中.但是在给出的示例代码中,如果引用,则每个都是相同的哈希.

初始化数据结构的方法是:

foreach my $key (keys %superhash) {
    $superhash{ $key } = {}; # New empty hash reference
}
Run Code Online (Sandbox Code Playgroud)

但是由于自动更新(在将变量用作容器时创建适当的容器对象),Perl中的这种初始化在很大程度上是不必要的.

my %hash;

$hash{a}{b} = 1;
Run Code Online (Sandbox Code Playgroud)

现在%hash有一个键'a',其值为匿名hashref,包含键/值对b => 1.阵列以相同的方式自动生成.