Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将数组作为值存储在Perl哈希中?_Arrays_Perl_Hash - Fatal编程技术网

Arrays 如何将数组作为值存储在Perl哈希中?

Arrays 如何将数组作为值存储在Perl哈希中?,arrays,perl,hash,Arrays,Perl,Hash,我试图用Perl创建一个散列,它的值是数组。比如: my @array = split(/;/, '1;2'); my $hash = {'a' => @array}; 令人惊讶的是,此报告(使用Data::Dumper): 给出了通过定义数组使用方括号将数组存储在哈希中的示例,如: my $hash = {'a' => ['1', '2']}; 这是可行的,但是我通过调用split方法来获取数组。方括号和圆括号定义数组有什么神奇之处?如何将“圆括号数组”转换为“方括号”数组?散

我试图用Perl创建一个散列,它的值是数组。比如:

my @array = split(/;/, '1;2');
my $hash = {'a' => @array};
令人惊讶的是,此报告(使用Data::Dumper):

给出了通过定义数组使用方括号将数组存储在哈希中的示例,如:

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
赋值给它,然后返回对该数组的引用。

括号的可能重复定义了一个数组。方括号定义数组引用。术语nit:方括号返回数组引用,或者更好,方括号计算数组reference@chilemagic同意。出于某种原因,当我搜索类似的问题时,这并不是一个热门话题。
my @array = split(/;/, '1;2');
my $hash = { a => \@array };   # my $hash = { a => [ '1', '2' ] };