因此,如果我运行此脚本,它第一次工作,但当我尝试向数组添加另一个值然后将数组分配回哈希引用时,它给我ARRAY(0x9bd8254)的值作为值中的值阵列。
有问题的三行
@addedvalue = @{$state{$ustate}}{largest_city} ;
push @addedvalue, $city;
$state{$ustate}{largest_city} = \@addedvalue;
我认为我在最后一行做错了。当我在最后一行之前打印出阵列并且它看起来很好。但我无法确定我做错了什么。 任何帮助都会很棒。
感谢。
答案 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");