Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Perl中的数组赋值_Arrays_Perl - Fatal编程技术网

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