[perl]サブルーチンの「&(アンパサンド)」について
サブルーチンの呼び出し時につける「&(アンパサンド)」は省略できます。
基本
サブルーチンを呼び出すときには通常&をつけて呼び出します。
&call_sub; # yes! called!
sub call_sub {
print "yes! called!\n";
}
&を省略できるとき
perlでは、構文だけでサブルーチンだと分かるときに限って&を省略できます。
まずは、呼び出し時にかっこをつけたとき。
call_sub(); # yes! called!
sub call_sub {
print "yes! called!\n";
}
かっこをつけるとサブルーチンの呼び出しだと判断されます。
それから、サブルーチンの定義の後に呼び出し文を書いた場合も省略できます。
sub call_sub {
print "yes! called!\n";
}
call_sub; # yes! called!
この場合、定義文の前に呼び出し文を書いてしまうとエラーになりますので注意。
call_sub; # error!!!
sub call_sub {
print "yes! called!\n";
}
&を省略できないとき
逆に、&を省略してはいけないときがあります。
それは、perlの組み込み関数と同じ関数名のとき。
&を省略してしまうと、組み込み関数が実行されてしまいます。
sub chomp {
print "hello!\n";
}
chomp; # error
まとめ
&をつけると、
- サブルーチンの呼び出しだと分かりやすい
- perlに同じ名前の組み込み関数があってもエラーにならない
- 呼び出し文を書く場所が限定されない
ということで、&はつけましょう。