「if (条件)」の「条件」部分には複数の条件を指定することができる。
下のように and または && を使って指定すると,条件1と条件2が同時に成り立つとき,処理が行われる。
条件1 and 条件2 または 条件1 && 条件2
#'Pendleton' と 'Jervie' を含むレコードを出力。 perl -ne 'if (/Pendleton/ and /Jervie/){ print; }' longleg.txt #20〜50行目を出力。($. は行数を表わす変数。) perl -ne 'if ($. >= 20 and $. <= 50 ) { print; }'
次のように or または || を使うと,いずれかの条件が成立すれば,処理が実行される。
条件1 or 条件2 または 条件1 || 条件2
and と &&,or と || には優先順序の違いがある。どちらも,後者の方が優先順序が高い。
論理演算子で結ぶ項は,適宜 ( ) で括ってよい。優先順位が不明な場合には,( ) で括って結合の順番を明示的に指定した方が間違いがない。下の 1 と 2 は ( ) の付け方が違うだけだが,表わしていることは異なる。
1. (A or B) and (C or D) 2. A or (B and C) or D
else は,その前で指定した条件が成立しない場合を表わす。下のように書くと,条件1が成立する場合は処理1を,しない場合は処理2を実行させることができる。
if (条件1) { 処理1 } else { 処理2 }
elsif を使うと3つ以上のケースに場合分けして処理することが可能になる。(elsif の綴りに注意。)次のように書く。
if (条件1) { 処理1 } elsif (条件2) { 処理2 } else { 処理3 }
まず条件1をチェックする。条件が成り立てば,処理1を行う。成り立たない場合は,処理1を行わず,条件2をチェックし,成立すれば処理2を行う。条件2も成り立たない場合は,処理3を行う。
elsif は複数並べて使うことができる。「その他の場合」には何も処理を行わない場合には,else 以降は省略してよい。