如果我没有改变值,那么[@ {$ myArray}]是否相当于Perl中的$ myArray?

aar*_*acy 7 perl

我有一些Perl代码:

{
  key => [@{$myArray}]
}
Run Code Online (Sandbox Code Playgroud)

我想重构一遍:

{
  key => $myArray
}
Run Code Online (Sandbox Code Playgroud)

如果我没有改变指向的值,那两个语义是否等价key

ike*_*ami 6

他们的行为方式不同

  1. @{ $h->{key} }改变了.(你提到的差异)

  2. @$array 改变了.

  3. $array不能作为数组解除引用(例如,$array是一个字符串).

  4. $array是一个重载的对象@{}.

  5. 元素@$array是大的还是神奇的.

    第一个片段在创建哈希时创建元素的副本,因此它会更慢,并且它将使用更多内存.数组或元素的任何神奇方面(例如,如果数组是:shared数组,或数组绑定Tie::File)将不会被第二个片段复制.