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

サブルーチンの外でも配列参照を出力していますが、これは間違っています。配列参照の範囲は、サブルーチンのみに限定されます。

@arrayしたがって、最後の行を print only notに変更する必要があります@$array

お気に入り:

print "Array changed: @array\n";

于 2012-10-19T06:58:42.227 に答える
3

に変更するだけ

print "Array changed: @array\n";

そしてそれは大丈夫なはずです

于 2012-10-19T06:57:13.353 に答える