无法将数组存储为哈希值

时间:2014-05-29 12:05:51

标签: arrays perl hash

我试图将数组(不是数组引用)存储在哈希中,但是它正在处理标量上下文中的数组,并且只在{{1}中存储数组的最后一个值}}

$hash->{key}

输出use Data::Dumper; $h->{'a'} = ( 'str_1', 'str_2' ); print Dumper $h;

为什么我不能将数组存储在hash-Key中并以$VAR1 = { 'a' => 'str_2' };

的形式访问数组元素

2 个答案:

答案 0 :(得分:3)

$h->{'a'} = [ 'str_1', 'str_2' ];

您只能将标量存储为哈希值,标量可以是简单值或数组引用。

检查perldoc

答案 1 :(得分:1)

哈希值必须是标量值,不能是数组或哈希值。因此,您需要使用数组引用作为$h->{'a'}

的值
$h->{'a'} = [ 'str_1', 'str_2' ];

并使用

访问它们
$h->{'a'}->[0]; # for 'str_1'
$h->{'a'}->[1]; # for 'str_2'

顺便说一句,正如@RobEarl所指出的,你也可以使用以下语法

$h->{'a'}[0]; # for 'str_1'
$h->{'a'}[1]; # for 'str_2'

请参阅perlref了解如何创建和使用不同类型的参考文献。