関数(サブルーチン)の定義
Create:2004/02/17, update:2004/02/17
簡単な関数
一番単純な関数は、以下のとおり。
sub hoge() { print "hello world\n"; }
引数を伴う関数/その1
関数に対して引数を指定する方法です。
&hoge(1, 2); sub hoge() { my ($arg1, $arg2) = @_; print "arg1 = $arg1, arg2 = $arg2 \n"; }
引数を伴う関数/その2
関数に対して引数のプロトタイプを指定する方法です。
@array = ("hoge", "cat", "doc"); &hoge(1, 2, @array); sub hoge($, $, \@) { my ($arg1, $arg2, @array) = @_; print "arg1 = $arg1, arg2 = $arg2 \n"; print "array = $array[0] \n"; }
デフォルトの引数値を使う関数
関数に対して引数が指定されなかった方法です。
&hoge(1, ); sub hoge() { my ($arg1, $arg2) = @_; $arg2 ||= 100; print "arg1 = $arg1, arg2 = $arg2 \n"; }
関数の戻り値/その1
関数実行結果に対しての結果を返す方法です。
my $ret = &hoge(1, 999); print "ret = $ret \n"; sub hoge() { my ($arg1, $arg2) = @_; return $arg1 + $arg2; }
関数の戻り値/その2
関数実行結果に対してリスト結果を返す方法です。
my @ret = &hoge(1, 999); print "ret = $ret[0] \n"; print "ret = $ret[1] \n"; sub hoge() { my ($arg1, $arg2) = @_; return $arg1, $arg2; }
関数の引数変数を直接操作
関数の引数変数を直接操作する方法です。
my $arg1 = 1; my $arg2 = 999; my $ret = &hoge(\$arg1, \$arg2); print "arg1 = $arg1 \n"; print "arg2 = $arg2 \n"; sub hoge() { my ($arg1, $arg2) = @_; $$arg1 = 1001; $$arg2 = 1999; }