wonder on server side

 : on twitter

[perl]サブルーチンの「&(アンパサンド)」について

without comments

サブルーチンの呼び出し時につける「&(アンパサンド)」は省略できます。

基本

サブルーチンを呼び出すときには通常&をつけて呼び出します。

&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に同じ名前の組み込み関数があってもエラーにならない
  • 呼び出し文を書く場所が限定されない

ということで、&はつけましょう。

Written by wonder-boys

11月 8th, 2009 at 4:08 pm

Posted in perl, study

Tagged with ,

Leave a Reply