関数(サブルーチン)の定義
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;
}