Loose-Info.com
Last Update 2008/05/18
TOP - Perl - サブルーチン - 引数

サブルーチンへ渡される引数は配列 @_ へ格納されます。

(例1)
# サブルーチンの呼び出し $a = &test(3); print "a = $a\n""; sub test { # 引数(@_の1番目の要素)を配列内のローカル変数に代入 my $a0 = $_[0]; # 演算結果を返す return ++$a0; }

実行結果
a = 4

(例2)
# サブルーチンの呼び出し $a = &test(1, 2, 3); print "a = $a\n"; sub test { # 引数を配列からリスト値として変数に代入 my ($a0, $a1, $a2) = @_; my $b = $a0 + $a1 + $a2; # 演算結果を返す return $b; }

実行結果
a = 6

(例3)
@aa1 = (1, 2); @aa2 = (3, 4); # 引数に配列を使用してサブルーチンの呼び出し &test(@aa1, @aa2); sub test { # 呼び出し時に記述した配列のリスト値が順に並んで@_に格納されている print "@_\n"; }

実行結果
1 2 3 4

(例4)
@aa1 = (1, 2); @aa2 = (1, 2); &test1(@aa1); # 引数に配列を使用してサブルーチンの呼び出し(test1) &test2(@aa2); # 引数に配列を使用してサブルーチンの呼び出し(test2) # @aa1の値は変更されている print "aa1 : @aa1\n"; # @aa2の値は変更されていない print "aa2 : @aa2\n"; sub test1 { print "@_ → "; $_[0]++; # $_[0]の値を変更 print "@_\n"; } sub test2 { print "@_ → "; my $a = $_[0]; # ローカル変数に引数の一つを代入 $a++; # 代入した変数を変更 print "@_\n"; }

実行結果
1 2 → 2 2 1 2 → 1 2 aa1 : 2 2 aa2 : 1 2