この章ではサブルーチンについて説明します。
前の章で配列やハッシュや文字列を操作する関数について説明しましたが、例えばsubstr関数は切り取った文字列を返すという機能を持った関数でしたね。
これらはPerlの内部機構であらかじめ決められたものです。
しかし、プログラマ自身もsubstrのような機能を持つ関数を作ることが出来るのです。
これがサブルーチンです。
例えばsubstr関数のような切り取った文字列を返すというプログラムを以下のサブルーチンの定義に書いていきます。
以下の例は3科目の平均を求めるプログラムです。
サブルーチンを使わない場合には以下のように書きます。
呼び出している箇所は
ここでは3個の引数をサブルーチン側に渡しています。
サブルーチン側でこれらの引数を受け取るには
この代入が終わりますと後は3科目の平均を求める計算が行われ、
先ほどのサブルーチンを書き替えますと以下のようになります。
引数の数は何個でも対応できるサブルーチンです。
サブルーチンの呼び出しは
そして、foreachの中では引数の合計を行っています。
以下の例のようにreturnを付けなくても、$sumの値は呼び出し側に戻ります。
つまり、returnを付けない場合にはサブルーチンの最後の値をサブルーチンの呼び出し側に戻すことになります。
このmaxサブルーチンは2つの値の中で大きい方を返してくれます。
サブルーチンの中にmyがありますが、これを付けた変数はブロック内だけが有効範囲になり、ブロックの外を出るとその変数の値を得ることが出来なくなります。
ブロックとは「{」から「}」までの間のまとまりの事を言います。