「項」は Perl でもっとも優先順位が高いものです。これには、変数、クォート とクォート的な演算子、括弧で括った任意の式、引数を括弧で括った任意の関数 が含まれます。実際には、この意味では本当の関数はなく、リスト演算子と関数 のように働く単項演算子が、引数を括弧で括るためそのように見えます。これら はすべて perlfunc manpage に記述しています。
もし、リスト演算子 (print()
など) や単項演算子 (chdir()
な
ど) の名前の後に開き括弧が続く場合には、その演算子と括弧内の引数は、通常
の関数呼び出しのように、もっとも高い優先順位で処理されます。
括弧が無い場合には、print
, sort
, chmod
のようなリス
ト演算子の優先順位は、演算子の左側をからすると非常に高く、右側からすると
非常に低く見えます。たとえば、
@ary = (1, 3, sort 4, 2); print @ary; # 1324 と印字
では、sort
の右のコンマは sort
よりも前に評価されます (右
側から見ると sort
の優先順位が低い) が、左側のコンマは
sort
のあとに評価されます (左側から見ると sort
の方が優先
順位が高くなっている)。言い方を変えると、リスト演算子は自分の後にある引
数をすべて使って処理を行ない、その結果を自分の前の式に対する「項」である
かのように見せるということです。ただし、括弧には気を付けないといけません:
# 以下は print を行なう前に exit を評価します: print($foo, exit); # 明らかにやりたいことではないでしょう。 print $foo, exit; # これでもない。 # 以下は exit を評価する前に print を行ないます: (print $foo), exit; # これがしたかった。 print($foo), exit; # これでもいい。 print ($foo), exit; # これも OK。
また、
print ($foo & 255) + 1, "\n";
の動作を一目見ただけで判断するのは、難しいでしょう。詳しくは、 See section 名前付き単項演算子,の節を参照してください。
この他に「項」として解析されるものには、do {} や eval {} の構成、サブルー ティンやメソッドの呼び出し、無名のコンストラクタ [] と {} があります。
後の方のSee section クォートとクォートのような演算子,の節やSee section I/O 演算子,の 節も参照してください。
Go to the first, previous, next, last section, table of contents.