演算子の優先順位
算数に、加算よりも乗算を先に計算するというルールが
あるように、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
右側をカッコで囲んだ場合と同じ結果になっている。
もちろん、全ての演算子の優先順位を覚える必要はなくて、
わからなければ、カッコを使うといい。
無理してカッコなしで式を書いても、後でソースを読む人
(自分も含めて)が困るだけ。