我试图在Perl中创建一个哈希值,它的值是数组。类似的东西:
my @array = split(/;/, '1;2');
my $hash = {'a' => @array};
令人惊讶的是,这报告(使用Data :: Dumper):
$VAR1 = {
'a' => '1',
'2' => undef
};
This page给出了一个通过定义数组使用方括号将数组存储在哈希中的示例,如:
my $hash = {'a' => ['1', '2']};
这样可行,但我通过调用split
方法获取了数组。关于方括号与括号之间定义数组的神奇之处,以及如何转换"括号数组"进入方括号'阵列
答案 0 :(得分:2)
散列(和数组)元素的值是标量,因此您无法将数组存储到散列中。
以下都是等效的:
my $hash = { a => @array };
my $hash = { 'a', @array };
my $hash = { 'a', $array[0], $array[1] };
my $hash = { a => $array[0], $array[1] => () };
常见的解决方案是存储对数组的引用。
my @array = split(/;/, '1;2');
my $hash = { a => \@array }; # my $hash = { a => [ '1', '2' ] };
[ LIST ]
同样创建一个数组,为其分配LIST
,然后返回对该数组的引用。