二項演算子の "||" は、短絡の論理和演算を行ないます。つまり、左被演算子が 真であれば、右被演算子は評価さえ行なわれないということです。評価される場 合には、スカラかリストかというコンテキストは、右被演算子にも及びます。
|| 演算子と && 演算子は、単に 0 や 1 を返すのではなく、最後に評価された 値を返すという点において、C と違っています。これにより、かなり一般的に使 えるホームディレクトリ ("0" でないとして) を探す方法は:
$home = $ENV{'HOME'} || $ENV{'LOGDIR'} || (getpwuid($<))[7] || die "You're homeless!\n";
のようにすることができます。
Perl では、多少読みやすい && と || の同義語として、"and" 演算子と "or" 演算子が用意されています (下記参照)。短絡の動作は全く同じです。しかし、 "and" と "or" の優先順位はかなり低くしてあるので、引数に括弧を使っていな いリスト演算子のあとに続けて使う場合にも、安心して使うことができます:
unlink "alpha", "beta", "gamma" or gripe(), next LINE;
C スタイルの演算子では:
unlink("alpha", "beta", "gamma") || (gripe(), next LINE);
のように書く必要があります。
Go to the first, previous, next, last section, table of contents.