0
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反映在调用子例程中。我不知道我哪里出错了。先感谢您。

4

2 回答 2

6

您也在子例程之外打印数组引用,这是错误的。数组引用的范围仅限于子例程。

因此,您应该将最后一行更改为仅打印@arraynot @$array

像:

print "Array changed: @array\n";

于 2012-10-19T06:58:42.227 回答
3

只需更改为

print "Array changed: @array\n";

应该没问题

于 2012-10-19T06:57:13.353 回答