Perlの関数は基本C/C++/Javaのように引数の型や数の宣言をする必要はありません。 ですが、特殊な状況下(たとえばDSLを書きたい時)ではある一定の指定ができます。 このような指定を「関数のプロトタイプを指定する」といいます。
このプロトタイプはJavaScriptのフレームワークであるPrototypeとは違い、関数の引数の型の宣言を行うことが出来ます。関数にプロトタイプが定義されている時は、定義された型どおりに関数を呼び出さなければエラーとなります。
sub subname ($$$) {
my($foo, $bar, $baz) = @_;
}
といった定義の時は
subname $foo, $bar, $baz;
という形で関数を呼び出さなければなりません。
my @list = qw( foo bar baz );
subname @list;
ではエラーになります。
(&@)
sub hoge ($&) {}
のような形でプロトタイプ宣言すると
hoge 'foo', sub {};
のような形で無いと関数が使えませんが
sub hoge (&) {}
sub mymap (&@) {}
のような形でプロトタイプ宣言すると
hoge {};
mymap {} qw( a b c d );
のような形で sub を省略出来ます。
Last modified: $Date: 2008-05-24 10:17:03 +0900 (Sat, 24 May 2008) $