複数の条件の指定のしかた


■ 論理演算子 and, &&, or, || を使う

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

if, elsif, else を使う

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 以降は省略してよい。