サブルーチンについて
呼び出し方
do hoge;
&hoge;
hoge();
前方宣言も可能。
sub hoge;
これをやっとくと、何もつけないでサブルーチンを呼ぶことも可能。
hoge;
存在しないサブルーチンが呼び出されると、エラー出る。
定義されているかチェックするときは、 defined が使える。
返り値は、最後に評価した値か、returnで指定した値となる。
引数
@_ の中に引数で指定した値の配列が入っている。
中身を見るときは、$_[0], $_[1] みたいな感じ。
@_の変更についてだが、配列自体の変更については呼び出し元に影響はない。
ただ、配列の値を変更すると呼び出し元にも影響が出る。
影響が出ないようにするには、サブルーチンが変数を渡されたら、local変数にいれる。
&hoge("foo", "bar");
sub hoge{
local ($foo, $bar) = @_;
}
local のスコープは、そのサブルーチンから呼ばれたサブルーチンでも適用となるので注意。
本当にもうそこだけにしたいときは、my を使う。
逆に配列自体に影響を与えたい場合は、エイリアス指定で投げる。
AUTOLOAD
これを使えば、定義していないサブルーチンを使ったときにこれが呼ばれる。
このサブルーチン内で使う、$AUTOLOADにはパッケージ名::呼び出したサブルーチン名が含まれている。
BEGINとEND
BEGINはそのサブルーチン内で一番最初に評価される処理。
ENDはそのサブルーチン内で一番最後に評価される処理。
ENDはdie後でも評価される。
subs
サブルーチンの前方宣言がらくちんに。
use subs ('fun1', 'fun2');
最終更新:2011年07月31日 17:58