
|
サブルーチンとは…
2002/07/16 作成 ----------- 一連の処理を1つにまとめてプログラム中どこからでも呼び出せるようにしたものをサブルーチンと言います。(僕は「関数」と表現する事が多いです…) 同じ処理を何度も行わなければならない場合は、その処理をサブルーチン化しておけば手間が省けるし、ソースファイルがスッキリして見やすく、そして軽くなります。(コンパイル言語の場合は実行ファイルも軽くなる) |
|---|
|
定義と使用方法
2002/07/16 作成 -----------
sub 関数名{
{}内で囲った処理がサブルーチンとなり、「関数名」を使って呼び出す事ができるようになります。# 処理内容 }
&関数名; # 引数を与えない呼び出し
「関数名」の前に「&」を付ける事でその関数(サブルーチン)を呼び出す事になります。この呼び出しの時点で初めてサブルーチンの内容が実行される事になります。&関数名(引数リスト); # 引数を与える呼び出し 「引数」というのは、そのサブルーチン内で使う変数の値の事です。例えば、メッセージを表示するサブルーチンで、表示する内容をサブルーチンの外から指定した時等に使えますね。
print "サブルーチン外\n"
これで、&draw; sub draw { print "サブルーチン内\n"; } サブルーチン外 サブルーチン内 と 出力されます。 |
|---|
|
引数
2002/07/16 作成 ----------- サブルーチンに「引数」を与え、その値を元に処理させる事ができます。
$str1 = "すう";
「ひきすう」と出力されます。$str2 = "ひき"; &draw($str1,$str2); sub draw { ($a, $b) = @_; print "$a$b"; } 二行目の「&draw($str);」で「draw」に渡された変数「$str」の内容は、特殊な変数「@_」に格納されます。 サブルーチン内でこの特殊な変数「@_」から値を取り出し、print文で出力しています。 |
|---|
|
戻り値
2002/07/16 作成 ----------- サブルーチンの結果として呼び出し側に返す値を「戻り値」と言います。 「return」 戻り値を返すにはこれを使います。
print "&big($a,$b)";
return 値;sub big { ($x, $y) = @_; if($x > $y) return $x; else return $y; } で戻り値を返し、サブルーチンを抜けます。 この場合$aと$bで大きい方の値を返し、print文で出力します。
sub big
とすると、return;の時点でサブルーチンを終了し、最後に評価された値が戻り値として返ります。{ ($x, $y) = @_; if($x > $y) $x; else $y; return; } 結果は↑と同じ。
sub big
のようにreturnを書かないと、サブルーチン内で最後に評価された値が戻り値として返ります。{ ($x, $y) = @_; if($x > $y) $x; else $y; } 結局これも同じ結果。 できるだけreturnを使って返しておきたい。 |
|---|