在 Perl 中将数组按值传递给哈希值?

Alw*_*ner 1 perl

我是 Perl 的新手,正在尝试一些东西。我注意到的一件事是,如果想要将数组作为哈希映射键的值传递,一种方法是通过引用传递它。如下

$hash_map{key} = \@arr
Run Code Online (Sandbox Code Playgroud)

有没有办法直接按值传递数组?谢谢

Dav*_*oss 5

哈希将字符串(键)映射到标量值。哈希中的值只能是标量。

数组(根据定义!)不是标量。获取表示该数组的标量值的最佳方法是获取对该数组的引用。这就是你的代码的作用。你应该这样做。

还有其他方法可以创建标量值来表示数组。例如,您可以使用join()数组的元素创建一个字符串。但这将非常脆弱,因为您需要找到一个未出现在任何元素中的分隔符。

最好只是像您已经做的那样参考一下。

更新:为了澄清,有三种方法可以通过参考来做到这一点。

  • $hash{key} = \@array- 获取对数组的引用并将该引用存储在$hash{key}.
  • $hash{key} = [ @array ]- 将数组展开到列表中,使用该列表作为元素创建一个新数组,并返回对此新数组的引用(有效复制该数组)。
  • @{$hash{key}} = @array- 这也获取数组的副本并存储对该副本的引用。