Go to the first, previous, next, last section, table of contents.


項とリスト演算子 (左方向)

「項」は 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.

検索式: