Arrays Perl中的数组赋值
两者的区别是什么Arrays Perl中的数组赋值,arrays,perl,Arrays,Perl,两者的区别是什么 myArr1 => \@existingarray 及 我正在将@existingarray分配给散列映射中的一个元素 我指的是内部到底发生了什么。对于第一个数组,它指向同一个数组,对于第二个数组,它使用@existingarray 提前感谢方括号引用了一个新数组,其中包含分配时@existingarray中的内容的副本 是的,第一个引用,第二个复制,然后引用 […]是匿名数组构造函数,将其中的列表转换为arrayref 所以当a=1,2,3时 [ @a ] 与 [
myArr1 => \@existingarray
及
我正在将@existingarray
分配给散列映射中的一个元素
我指的是内部到底发生了什么。对于第一个数组,它指向同一个数组,对于第二个数组,它使用@existingarray
提前感谢方括号引用了一个新数组,其中包含分配时@existingarray中的内容的副本 是的,第一个引用,第二个复制,然后引用
[…]
是匿名数组构造函数,将其中的列表转换为arrayref
所以当a=1,2,3时
[ @a ]
与
[ 1, 2, 3 ]
(阵列展平为列表)或
实际上,元素会被复制
而且
将确认它们是不同的。如果我们这样做了
$ref1->[0] = 'a';
$ref2->[0] = 'b';
然后,$a[0]
将等于a
,而不是b
您可以使用
perl -e 'my @a=(1); my $ra=\@a; my $rca=[@a]; $ra->[0]=2; print @a, @{$ra}, @{$rca};'
221
查看您关于[@existingarray]创建对@existingarray副本的引用的假设是否正确(并且myArray*
不是Perl)
警告:amon正在将我的
perl-e“…”
(在bash下失败)修改为perl-e“…”
(在cmd.exe下失败):使用适用于shell的引号 它们都给出了语法错误:-)
my ($ref1, $ref2) = (\@a, [@a]);
print "$ref1 and $ref2 are " . ($ref1 eq $ref2 ? "equal" : "not equal") . "\n";
$ref1->[0] = 'a';
$ref2->[0] = 'b';
perl -e 'my @a=(1); my $ra=\@a; my $rca=[@a]; $ra->[0]=2; print @a, @{$ra}, @{$rca};'
221