アットウィキロゴ

perl > sub

サブルーチンについて


呼び出し方

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