Arrays 无法将数组存储为哈希值

Arrays 无法将数组存储为哈希值,arrays,perl,hash,Arrays,Perl,Hash,我试图在散列中存储一个数组(不是数组ref),但它在标量上下文中处理数组,并且只在$hash->{key}中存储数组的最后一个值 use Data::Dumper; $h->{'a'} = ( 'str_1', 'str_2' ); print Dumper $h; 输出:$VAR1={'a'=>'stru 2'} 为什么我不能将数组存储在哈希键中,并以$hash->{Key}[index] $h->{'a'} = [ 'str_1', 'str_2' ]; 您只能将标量存储为散

我试图在散列中存储一个数组(不是数组ref),但它在标量上下文中处理数组,并且只在
$hash->{key}
中存储数组的最后一个值

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

为什么我不能将数组存储在哈希键中,并以
$hash->{Key}[index]

$h->{'a'} = [ 'str_1', 'str_2' ];
您只能将标量存储为散列值,标量可以是简单值或数组引用

检查

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


检查。

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

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

$h->{'a'}->[0]; # for 'str_1'
$h->{'a'}->[1]; # for 'str_2'
顺便说一下,正如@robeall所指出的,您还可以使用以下语法

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

有关如何创建和使用不同类型的引用,请参阅。

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

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

$h->{'a'}->[0]; # for 'str_1'
$h->{'a'}->[1]; # for 'str_2'
顺便说一下,正如@robeall所指出的,您还可以使用以下语法

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

有关如何创建和使用不同类型的引用,请参阅。

请阅读我的问题的第一行。(我试图在哈希中存储数组而不是数组引用。)@Bharat您只能存储数组引用。这些是perl基础知识。请阅读我的问题的第一行。(我试图在哈希中存储数组而不是数组引用。)@Bharat您只能存储array ref。这些是perl基础知识。