说我有类似的东西:
# %superhash is some predefined hash with more than 0 keys;
%hash = ();
foreach my $key (keys %superhash){
$superhash{ $key } = %hash;
%hash = ();
}
superhash的所有键是指向
%hash
访问的同一个空哈希还是它们是不同的空哈希?如果不是,我如何确保它们指向空散列?
最佳答案
您需要使用\
运算符对多个数据类型(数组或哈希)进行引用,然后才能将其存储到任一类型的单个插槽中。但是在给定的示例代码中,如果引用,则每个都是相同的哈希。
初始化数据结构的方法是:
foreach my $key (keys %superhash) {
$superhash{ $key } = {}; # New empty hash reference
}
但是由于自动生存(在将变量用作容器时创建适当的容器对象),因此在Perl中基本上不需要这样的初始化。
my %hash;
$hash{a}{b} = 1;
现在
%hash
有一个键“a”,其值是一个匿名hashref,其中包含键/值对b => 1
。阵列以相同的方式自动存活。关于perl - 如何在Perl中创建一个新的空哈希引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2316481/