use warnings;
use strict;
my @array = (1,2,3,4,5);
my $v = 1;
sub by_ref
{
my ($array_ref,$v) = @_;
@$array_ref = (0,0,0);
print "Array inside by_ref: @$array_ref\n";
}
by_ref(\@array,$v);
print "Array changed: @$array\n";
我通过引用传递@array
(我假设我做得对)。我希望@array
上的子例程中所做的更改能够反映在调用子例程中。我不知道我哪里出错了。
提前谢谢。
答案 0 :(得分:6)
您也在子程序外打印数组引用,这是错误的。数组引用的范围仅限于子例程。
因此,您应该更改最后一行,以便仅打印@array
而不是@$array
。
喜欢:
print "Array changed: @array\n";
答案 1 :(得分:3)
只需更改为
print "Array changed: @array\n";
它应该没问题