or演算子 - 優先順位が低い論理和



  1. Perl




  2. 演算子



  3. here

orPerl論理演算子のひとつで、論理和を表現します。||と意味は同じですが、orの方が演算子の優先順位が低く、文と文の間に利用するのが一般的です。

1 or2

このように記述すると、文1が偽を返したときに、文2が実行されます。

orを条件分岐として使う

このような性質を利用してorは条件分岐に使われることが多いです。たとえばopen関数が失敗した場合は次のように記述します。

open my $fh, '<', $file
  or die qq/Can't open file "$file": $!/;

open関数が成功した場合は真が返されるのでorの右辺は実行されません。open関数が失敗した場合はundefが返されるので右辺のdieが実行されプログラムは終了します。

もうひとつの例として、system関数と一緒に使われることもあります。system関数は成功すると0を返すので、次のように記述します。

system(@cmd) == 0
  or die "Can't execute command @cmd";

主要な処理を先に記述して、補足的なエラー処理を後で書きたい場合に、orによる条件分岐を使うことができます。

「and」を条件分岐に使うこともできますが、読みにくいので「or」をお勧めします。

# andで書き換えた例
system(@cmd)
  and die "Can't execute command @cmd";