TOP > Perl > サブルーチン |
サブルーチン
ユーザ定義関数を作成する事ができる。サブルーチン名は独立した専用の名前空間に入っているので、1つのプログラム上でサブルーチン名とスカラー変数名は独立している。
サブルーチンの定義
sub サブルーチン名 {
#処理
}
サブルーチンの起動
(書式)&サブルーチン名;
サブルーチンの戻り値
サブルーチンは全て何かしらの値(戻り値)を返す。但し、全てのサブルーチンが有用な値を返す訳ではない。かえす値は、自動的にサブルーチン内で最後に行われた計算の結果が自動的に戻り値となる。
サブルーチンの戻り値の例
sub func { print "サブルーチンが呼び出されました\n"; $val = $a + $b; #この値の結果が戻り値となる。 } #以下のサブルーチンは$x,$yの値によって返す値が異なる。 sub rev_func { if ($x < $y) { $x..$y; } else { reverse $y..$x; } } $x = 3; $y = 9; @array = &rev_func; サブルーチンに引数を渡す
サブルーチンは引数を受け取る事ができる。サブルーチンを呼び出す際に、括弧で値を渡す。サブルーチン内で引数の値は、配列変数@_でアクセスできる。
この値は、サブルーチン内のローカル的な値なので、もしグローバルな@_があった時は、サブルーチンを起動する前の@_の値は一時的に保存され、サブルーチン終了後に元に戻る。
また、呼び出す際には、サブルーチン名の右に括弧をつけて、引数をカンマで並べる。
サブルーチンの引数の例
sub rev_func { if ($_[0] < $_[1]) { $_[0]..$_[1]; } else { reverse $_[1]..$_[0]; } } @array = &rev_func(9, 3); return演算子
return演算子は、サブルーチンから即座に値を返す。returnを単独で使った場合は、スカラーコンテキストの時はundef、リストコンテキストの時は、空リストが返る。
return演算子の例
my @array = qw / abc def ghi /; my $pat = "def"; my $result = &search_pat($pat, @array); sub search_pat { my($pat, @array) = @_; foreach (0..$#array) { if ($pat eq $array[$_]) { return $_;#スカラー } } -1;#見つからなかった場合 } アンパーサンドの省略
サブルーチンを起動する際、アンパーサンドを省略する事ができるケースがある。そのケースとは、「起動前にサブルーチンを定義する」である。但し、自分で記述したサブルーチン名が組み込み関数と一緒の時はアンパーサンドは省略できない(省略すると、組み込み関数が呼ばれる)。
|
Copyright 2007 ためになるホームページ All Rights Reserved. |