Perl 11
サブルーチン
[HOME] - [Perl_Index] - [BACK] - [NEXT]



サブルーチンとは…
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)";

sub big
{
  ($x, $y) = @_;
  if($x > $y)
    return $x;
  else
    return $y;
}
return 値;
で戻り値を返し、サブルーチンを抜けます。
この場合$aと$bで大きい方の値を返し、print文で出力します。

sub big
{
  ($x, $y) = @_;
  if($x > $y)
    $x;
  else
    $y;

return;
}
とすると、return;の時点でサブルーチンを終了し、最後に評価された値が戻り値として返ります。
結果は↑と同じ。

sub big
{
  ($x, $y) = @_;
  if($x > $y)
    $x;
  else
    $y;
}
のようにreturnを書かないと、サブルーチン内で最後に評価された値が戻り値として返ります。
結局これも同じ結果。

できるだけreturnを使って返しておきたい。




[HOME] - [Perl_Index] - [BACK] - [NEXT]

 









[PR]当たる!無料占いで運命鑑定:プロの占い師による本格運命鑑定が無料で