在以下 C# 代码中:
int[] X = new int[2];
X[0] = 1;
X[1] = 2;
int[] Y = X;
X[1] = 3;
执行此操作后,Y[1] 也将为 3,因为操作 Y = X 不会进行克隆,而是将 X 指向的引用或指针分配给 Y。
如果在 Perl 5 下尝试相同的操作:
my @X = (1, 2);
my @Y = @X;
$X[1] = 3;
与 C# 不同的是,Y[1] 不是 3,而是 2,这表明 Perl 在 @Y = @X 操作之后制作了数组的副本。
所以,我的问题是 - 有没有办法使用另一个 Perl 数组的引用来分配或初始化一个 Perl 5 数组,以便它们都指向相同的数据?我已经知道引用并尝试取消引用对数组的引用,但这也产生了副本。我也知道使用对数组的引用将解决我正在尝试做的大部分事情,所以我不需要任何答案来展示如何使用引用。