TOP - Perl - プロトタイプ

プロトタイプはサブルーチンが受け取る引数型と数の指定を行います。
呼び出しの際はサブルーチン名の前の&は使用できません。また、呼び出す前に宣言されている必要があります。

・プロトタイプ指定文字
@, % : それ以降の引数を全てリスト値とする
$    : 一つのスカラー値
&    : 無名サブルーチン
*    : 一般的にファイルハンドル

・プロトタイプを利用したサブルーチン宣言

sub 名前1 (プロトタイプ);
名前1 : サブルーチン名

・プロトタイプを利用したサブルーチン定義

sub 名前1 (プロトタイプ) ブロック1
名前1     : サブルーチン名
ブロック1 : サブルーチンの定義を行うブロック。実際のコードはここに記述

(例1)
sub test_a ($);             # ここでサブルーチンを宣言
                            # スカラー値×1

$p = test_a(1);             # スカラー値×1を引数としてサブルーチンの呼び出し

print "$p\n";

sub test_a ($)
{
    my $a = $_[0];
    return ++$a;
}
実行結果
2

(例2)
sub test_a ($)              # 宣言と定義を同時に行う場合は、呼び出し前に記述
{
    my $a = $_[0];
    return ++$a;
}

$p = test_a(1);

print "$p\n";
実行結果
2

(例3)
sub test_b ($$)             # ここでサブルーチンを宣言・定義
                            # スカラー値×2
{
    my ($a, $b) = @_;
    return $a + $b;
}

$p = test_b(1, 2);

print "$p\n";
実行結果
3

(例4)
sub test_c ($$;$)               # ここでサブルーチンを宣言・定義
                                # スカラー値×2 + 省略可能スカラー値×1
{
    my ($a, $b, $c) = @_;
    if ($c) {$b += $c;}
    return $a + $b;
}

$p = test_c(1, 2, 3);

print "$p\n";
実行結果
6

(例5)
sub test_d ($$@)                # ここでサブルーチンを宣言・定義
                                # スカラー値×2 + 配列×1
{
    my $a = shift;
    my $b = shift;
    my @c = @_;
    return @c;
}

$a = 1;
$b = 2;
@c = (3, 4);
@p = test_d($a, $b, @c);

print "@p\n";
実行結果
3 4

(例5)
sub test_e ()                   # ここでサブルーチンを宣言・定義
                                # 引数無し
{
    print "test\n";
}

test_e();
実行結果
test


Copyright(C) 2006-2011 CLAYPOT. All Rights Reserved.