サブルーチンのアンパサンド「&」
Perlを勉強したときに覚えたサブルーチンの呼び出し方は、サブルーチン名の前に必ずアンパサンド(「&」)をつける、というものだった。
それから「初めてのPerl」を読み、「Perlベストプラクティス」を読み、でやっとその意味が分かった(と思う)のでメモ。
「&」をつけて起動
- 組み込み関数と同じ名前の自作サブルーチンを100%呼び出せる。
「&」なしで起動
- 組み込み関数と同じ名前の自作サブルーチンだと、組み込み関数が優先。(自作の方も呼び出せる? よく分からない。)
- 引数の括弧を省略するには、呼び出し元がサブルーチンの定義場所より後に来ないといけない。
- 引数の括弧をつければ、呼び出し元の位置などは無関係になる。
sub print { print "MyPrint : ", @_; } print "ID : rightgo09","\n"; #=> 組込関数なので括弧は省略可 &print("ID : rightgo09","\n"); #=> 括弧は必須 #=> ID : rightgo09 #=> MyPrint : ID : rightgo09
sub myprint { print "MyPrint : ", @_; } myprint "ID : rightgo09","\n"; #=> 括弧は省略可 #=> MyPrint : ID : rightgo09
myprint("ID : rightgo09","\n"); #=> 括弧は必須 sub myprint { print "MyPrint : ", @_; } #=> MyPrint : ID : rightgo09