Perlには実にたくさんの組み込み(ビルトイン)関数が定義されています。例えば、print文も組み込み関数の1つです。そうした組み込み関数を利用することで、シーンに応じた様々な機能を実現することができます。
一方で、組み込み関数を使わない「自前」の関数を定義して利用することのできます。自前の関数を「ユーザ定義関数」と呼び、任意に作成します。
sub 関数名 {
処理内容のプログラム;
}
sub とは、「subroutine」つまり、サブルーチンの略で、関数を定義するために使われます。&関数名();
@_」に格納されます。配列についての詳しい説明は 変数と配列 を参照してください。@_」とは、配列名が「_」であると認識してください。関数内では、@_ をそのまま参照することもできますが、いったん別の変数にセットしてから利用するのが一般的です。
sub 関数名 {
local(変数名) = @_;
処理内容;
}
loacl とは、ローカル変数を宣言するもので、その変数はブロック内と、ブロック内から呼び出されれる関数内でのみ有効な変数を定義します。
sub show thisYear {
local($year) = @;
$i = $year - 1988;
print "$year 年は、平成 $i 年です\n";
}
&show thisYear(2003);
&show thisYear(2004);
$year へセットされます。関数を呼び出すときに引数(パラメータ)を指定していることがお分かりでしょう。return文を、関数の最後に記述します。
sub 関数名 {
処理内容のプログラム;
return(戻り値);
}
return文の指定がない場合には、その関数内で最後の実行された結果が返されます。そのため、上記のように return文を記述した場合と同じ結果になる場合があります。return文を記述するようにお勧めします。
sub show thisYear {
local($year) = @;
$i = $year - 1988;
return($i);
}
$modori = &show thisYear(2003);
print "2003年は、平成 $modori 年です\n";