Go to the first, previous, next, last section, table of contents.


C スタイルの論理和

二項演算子の "||" は、短絡の論理和演算を行ないます。つまり、左被演算子が 真であれば、右被演算子は評価さえ行なわれないということです。評価される場 合には、スカラかリストかというコンテキストは、右被演算子にも及びます。

|| 演算子と && 演算子は、単に 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.

検索式: