我有一些Perl代码:
{
  key => [@{$myArray}]
}
我想重构一遍:
{
  key => $myArray
}
如果我没有改变指向的值,那两个语义是否等价key?
他们的行为方式不同
@{ $h->{key} }改变了.(你提到的差异)
@$array 改变了.
$array不能作为数组解除引用(例如,$array是一个字符串).
$array是一个重载的对象@{}.
元素@$array是大的还是神奇的.
第一个片段在创建哈希时创建元素的副本,因此它会更慢,并且它将使用更多内存.数组或元素的任何神奇方面(例如,如果数组是:shared数组,或数组绑定Tie::File)将不会被第二个片段复制.