我正在编写一个Perl脚本,所以我在另一个数组@B中有一个数组@A,但是当更新数组@A时,数组@B不会考虑这个更新。
这是我的代码:
my @A;my @B;
@B=("test",[@A]);
@A=("aaa","bbb","ccc");
print $B[1][1];
它只有在我以这种方式更改行的顺序时才有效:
my @A;my @B;
@A=("aaa","bbb","ccc");
@B=("test",[@A]);
print $B[1][1];
问题是我需要保持行的顺序作为第一个例子吗?
有什么帮助吗?
你没有在@B中存储@A,你正在存储一个匿名数组[]
,最初由@A的内容填充(即空)。但是,您可以存储对@A的引用:
@B = ( 'test', \@A );
你被[ @A ]
和\@A
之间的区别所灼烧。
[ @A ]
的意思是“将@A
的内容复制到一个新的匿名数组中并返回对该新数组的引用”。\@A
的意思是“返回对数组@A
的引用”。在您的第一个示例中,您在将任何内容放入其中之前复制@A
的内容。所以你的新数组是空的。像这样重写你的第一个例子它会起作用。
my @A;
my @B;
@B = ("test", \@A);
@A = ("aaa", "bbb", "ccc");
print $B[1][1];