我试图在 Perl 中理解普通数组引用 \@array 和 [@array] 之间的区别。
在下面的文章http://perl-begin.org/tutorials/perl-for-newbies/part2/中进行了介绍,它说“方括号 ([ @array ]) 包围的数组返回对数组的动态引用。这个引用不直接影响其他值,这就是为什么它被称为动态的。”
上面的最后一句话说引用不直接影响其他值我不清楚,他们指的是什么其他值?一些网站复制并粘贴了相同的解释。有人可以提供更好的解释来突出差异吗?
这是他们提供的一个例子:
use strict;
use warnings;
sub vector_sum
{
my $v1_ref = shift;
my $v2_ref = shift;
my @ret;
my @v1 = @{$v1_ref};
my @v2 = @{$v2_ref};
if (scalar(@v1) != scalar(@v2))
{
return undef;
}
for(my $i=0;$i<scalar(@v1);$i++)
{
push @ret, ($v1[$i] + $v2[$i]);
}
return [ @ret ];
}
my $ret = vector_sum(
[ 5, 9, 24, 30 ],
[ 8, 2, 10, 20 ]
);
print join(", ", @{$ret}), "\n";
但是,在上面给出的示例中,如果我更改 return [ @ret ]; 到 \@ret,程序返回相同的结果,所以我不确定这是如何作为示例来说明动态引用的。
谢谢。