In particular, this means that you shouldn't use this for selecting between two aggregates for assignment: @a = @b || @c; # this is wrong @a = scalar(@b) || @c; # really meant this @a = @b ? @b : @c; # this works fine, though
perlopのC-Style Logical Or節です。また、同じくperlopのLogical or and Exclusive Or節にも興味深い記述があります。
Binary "or" returns the logical disjunction of the two surrounding expressions. It's equivalent to || except for the very low precedence.
$a = $b or $c; # bug: this is wrong ($a = $b) or $c; # really means this $a = $b || $c; # better written this way