Loose-Info.com
Last Update 2008/05/18
TOP - Perl - プロトタイプ

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

・プロトタイプ指定文字

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

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

sub 名前1 ( プロトタイプ );

名前1
サブルーチン名

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

sub 名前1 ( プロトタイプ ) ブロック1

名前1
サブルーチン名
ブロック1
サブルーチンの定義を行うブロック。実際のコードはここに記述

(例1)
# ここでサブルーチンを宣言 # スカラー値×1 sub test_a ($); # スカラー値×1を引数としてサブルーチンの呼び出し $p = test_a(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)
# ここでサブルーチンを宣言・定義 # スカラー値×2 sub test_b ($$) { my ($a, $b) = @_; return $a + $b; } $p = test_b(1, 2); print "$p\n";

実行結果
3

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

実行結果
6

(例5)
# ここでサブルーチンを宣言・定義 # スカラー値×2 + 配列×1 sub test_d ($$@) { 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

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

実行結果
test