在perl中通过引用传递

时间:2012-10-19 06:54:06

标签: perl

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上的子例程中所做的更改能够反映在调用子例程中。我不知道我哪里出错了。 提前谢谢。

2 个答案:

答案 0 :(得分:6)

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

因此,您应该更改最后一行,以便仅打印@array而不是@$array

喜欢:

print "Array changed: @array\n";

答案 1 :(得分:3)

只需更改为

print "Array changed: @array\n";

它应该没问题