[英]How can I use an existing array as a value in a hash in Perl?
我有一个现有的数组,我希望在哈希中添加一个值。 我知道你可以使用数组作为值,但是看不到分配现有数组的方法。 我基本上想去:
$hash{fieldName} = @myArray;
只有这显然不起作用! 帮助赞赏!
您只能在散列/数组中存储标量值。 你需要使用:
$hash{fieldName} = \@myArray;
存储它,并:
my @myOtherArray = @{$hash{fieldName}};
把它拿回来。 它通过使用对数组的引用来解决标量需求。
由于没有人提到它,你的代码所做的如下:
由于您分配了哈希的元素,因此赋值位于标量上下文中
在标量上下文中,数组的值变为数组的大小
所以, $hash{fieldName}
的值变得等于数组的大小( scalar @myarray
)
虽然正确的答案确实是存储引用,但有时候\\@myArray
, [ @myArray ]
(浅拷贝)和dclone (深拷贝)之间的区别\\@myArray
重要。
如果你有, $hash{fieldName} = \\@myArray
,那么$hash{fieldName}->[2]
将修改@myArray
的第三个元素。 如果@myArray
本身不包含任何引用,则存储浅表副本将帮助您避免该行为。
您可以使用反斜杠运算符'\\'存储对数组的引用,例如
$hash{fieldName} = \@myArray
然后,您可以使用以下内容来访问它:
@{$hash{fieldName}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.