演算子の優先順位

算数に、加算よりも乗算を先に計算するというルールが
あるように、Perl演算子にも優先順位がある。


Perl の演算子と優先順位


例えば、*は.よりも優先順位が高い。
下のような場合、先に乗算をしてから、文字列を連結する。

#!/usr/bin/perl -w
$a = 5 . 5 ** 2;
print $a;
525


優先順位を変えたい場合は、カッコを使う。

#!/usr/bin/perl -w
$a = (5 . 5) ** 2;
print $a;
3025


優先順位が同じ場合は、結合によって実行順序が決まる。
左結合の場合は、左側がカッコで囲まれているものとして、
右結合の場合は、右側がカッコで囲まれているものとして、
計算される。
ちなみに、**は右結合なのだが、それを確かめてみる。

#!/usr/bin/perl -w
$a = 3 ** 2 ** 4;
$b = 3 ** (2 ** 4);
$c = (3 ** 2) ** 4;
print "$a\n$b\n$c\n";
43046721
43046721
6561

右側をカッコで囲んだ場合と同じ結果になっている。


もちろん、全ての演算子の優先順位を覚える必要はなくて、
わからなければ、カッコを使うといい。
無理してカッコなしで式を書いても、後でソースを読む人
(自分も含めて)が困るだけ。