变量无法以这种方式更新

时间:2018-03-05 15:39:39

标签: perl

我目前正在编写一个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];

问题是我需要保持行的顺序作为第一个例子吗?

请帮忙吗?

2 个答案:

答案 0 :(得分:7)

您不是在@B中存储@A,而是存储一个最初由@A内容填充的匿名数组tempPhrase = sentence.replaceAll("[.,!?:;]" , " "); (即为空)。但是,您可以存储对@A的引用:

[]

答案 1 :(得分:6)

[ @A ]\@A之间存在差异。

  • [ @A ]表示“将@A的内容复制到匿名数组中,并返回对该新数组的引用”。

  • \@A表示“返回对数组@A的引用”。

在您的第一个示例中,您在将任何内容放入其中之前复制@A的内容。所以你的新数组是空的。像这样重写你的第一个例子它会起作用。

my @A;
my @B;
@B = ("test", \@A);
@A = ("aaa", "bbb", "ccc");
print $B[1][1];