Binary "or" returns the logical disjunction of the two surrounding expressions. It's equivalent to || except for the very low precedence. This makes it useful for control flow: print FH $data or die "Can't write to FH: $!"; #### die unless $live; ## the original line, which I expand a minute later die unless $live or $reanimated; ## first change, and first error; moving on for now die unless $live or $reanimated or !$cooked; ## second change double negative, scary, still error, abandon unless, abandon unless, abandon unless die if !$live or !$reanimated or $cooked; ## clarity, it works ... but some people think differently, so choice, die if !($live or $reanimated) or $cooked; ## whooops, error again, logic not practiced die if !($live and $reanimated) or $cooked; ## works again, choice is choice