繁体   English   中英

如何将现有数组用作Perl中哈希值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM