関数(サブルーチン)の定義

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;
}
[..戻る..]