式は、評価されるコンテキストに応じて異なる意味を持つことができます。主な 3 つのコンテキストは、リスト、スカラー、および void ですが、スカラー コンテキストにはいくつかのサブコンテキストが存在します (ブール値、文字列、および数値が最も重要なものです)。 .
コンマ演算子もこの規則の例外ではありません。リスト コンテキストでは、カンマ演算子はリスト連結演算子として機能し、そのオペランドをリスト コンテキストで評価し、結果のリストを 1 つのリストに結合します。これは、コンマ演算子を扱うときによく知っているコンテキストです。
ただし、スカラー コンテキストでは、コンマ演算子は C のコンマ演算子と同じように機能します。一連の式を評価し、返される一番右の式を除いて、その結果を破棄します (補足として、破棄される式は無効なコンテキストで評価され、返される式はスカラー コンテキストで評価されます)。各 perl オペレーターがさまざまなコンテキストでどのように動作するかを学ぶには、perlopを読むことをお勧めします。
コンテキストを完全に理解するには、最も外側の演算子がそのオペランドにコンテキストを適用し、その演算子がそのオペランドにコンテキストを適用する、ということを認識する必要があります (別の補足: 行の最も外側の式は常に無効なコンテキスト)。したがって、たとえば、割り当て演算子が配列またはハッシュ変数 (% または @ で始まる) で使用されている場合、割り当ての右側は結果としてリスト コンテキストで評価されます。ただし、変数がスカラーの場合、代入の右側は代わりにスカラー コンテキストで評価されます。これが、以下の割り当てでコンマ演算子を使用する理由です。
@foo = ('cc', '-E', $bar);
$foo = ('cc', '-E', $bar);
まったく異なる方法で行動します。
コンテキストを制御または反応するコードを作成する方法の詳細については、スカラー演算子と wantarray 演算子についてお読みください。