我正在尝试在 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
方法获取数组的。方括号与括号在定义数组时有何神奇之处,以及如何将“括号数组”转换为“方括号”数组?
最佳答案
哈希(和数组)元素的值是标量,因此您无法将数组存储到哈希中。
以下内容都是等效的:
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
,然后返回对该数组的引用。
关于arrays - 如何将数组存储为 Perl 散列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480241/