ANDとORの真理値表は
p q p AND q p OR q
- - ------- ------
F F F F
F T F T
T F F T
T T T T
または、グループ化する場合、
p q p AND q p q p OR q
- - ------- - - ------
F * F F F F
T F F F T T
T T T T * T
つまり、最終結果を知るために両方のオペランドを評価する必要は必ずしもありません。
Perl(他の言語の中でも)はそれを機能として組み込んでいます:それはできるだけ早く戻ることによってブール演算子の評価を「短絡」させます。それは良い最適化であるだけでなく、非常に便利です。これにより、これらの構成を意味のあるものにすることができます。
func(...)
or die;
condition(...)
and next;
短絡なしで、die
無条件next
に評価されます。
両方のオペランドを評価する場合は、一時変数が必要になります
my $f = f(); # f() has side-effects!
my $g = g(); # g() has side-effects!
if ($f && $g) {
...
}