Some examples: $ perl -MO=Deparse -e'"" || 1' '???'; -e syntax OK - - - - - $ perl -MO=Deparse -e'undef || 1' '???' unless undef; -e syntax OK - - - - - $ perl -MO=Deparse -e' use constant F => undef; F and 1; undef and 2; ' use constant ('F', undef); '???'; '???' if undef; -e syntax OK - - - - - So compile-time-undef folds, but runtime-undef doesn't. (which initially surprised me, but now looks fine with me) -- Ruud