Perl の括弧
Perl の括弧による優先順位の扱いが良く分からない。とくにサブルーチンが絡んだ場合が分からない。たとえば、
use strict; my $x = "hogehoge"; my $y = 3; my $z0 = (length $x) - $y; my $z1 = length($x) - $y; my $z2 = length ($x) - $y; my $z3 = length $x - $y; print "z0 = " . $z0 . "\n"; print "z1 = " . $z1 . "\n"; print "z2 = " . $z2 . "\n"; print "z3 = " . $z3 . "\n";
を実行すると、結果はつぎのようになる。
z0 = 5 z1 = 5 z2 = 5 z3 = 2 Argument "hogehoge" isn't numeric in subtraction (-) at A.pl line 8.
(なお、ここで結果の最終行は標準エラー出力であり、他の標準出力との順序関係は不定である。)
大概は $z1 のような書き方だと思うが、この丸括弧はなにを意味するのだろうか。サブルーチン呼び出しの引数の位置を意味する括弧なのだろうか。それとも演算子の優先順位を変えるための括弧なのだろうか。もし後者だと仮定すると、$z2 と $z3 の違いはなぜおこるんだ?ということは前者のほうか?