サブルーチン
引数を指定しないと、暗黙に@_が渡される。
かつ引数は参照渡しになる。
my @list = qw(1 2 3 4 5); test(@list); sub test { &print_args; &change_args; &print_args; } sub print_args { print "@_\n"; } sub change_args { @_ = qw(6 7 8 9 0); }
実行結果
1 2 3 4 5
6 7 8 9 0
こういう場合ももちろん参照渡し
my $abc = "abc"; by_reference($abc); print $abc,"\n"; sub by_reference { $_[0] = "by_reference"; }
実行結果
by_reference
最後に、戻り値はreturnで明示しなければ最後に評価した式だよんという話。
my $foo = &last; print $foo, "\n"; sub last { 10; }
実行結果
10