Perl将数组分配给哈希引用

时间:2014-02-24 21:07:17

标签: arrays perl hash

因此,如果我运行此脚本,它第一次工作,但当我尝试向数组添加另一个值然后将数组分配回哈希引用时,它给我ARRAY(0x9bd8254)的值作为值中的值阵列。

有问题的三行

@addedvalue =  @{$state{$ustate}}{largest_city}  ;
push @addedvalue, $city;
$state{$ustate}{largest_city} =  \@addedvalue; 

我认为我在最后一行做错了。当我在最后一行之前打印出阵列并且它看起来很好。但我无法确定我做错了什么。 任何帮助都会很棒。

感谢。

1 个答案:

答案 0 :(得分:3)

哈希只能包含标量,因此您使用对数组(而不是数组)的引用作为哈希元素的值。

但是到了打印的时候,你打印了哈希元素的值,而不是哈希元素值引用的数组元素。

$state{$ustate}{largest_city} = \@addedvalue; 
print("@{ $state{$ustate}{largest_city} }\n");

$state{$ustate}{largest_city} = \@addedvalue; 
print(join(', ', @{ $state{$ustate}{largest_city} }), "\n");

largest_city需要一个数组似乎很奇怪。以下内容会更有意义。

$state{$ustate}{largest_city} = $city; 
print("$state{$ustate}{largest_city}\n");