Um...somewhere along the line, someone dropped a "$" before
"undef"..."$undef" != undef, but $undef = 'undef'';
In answer to next Q, I did want assignments -- they needed to be evaluated or done left-to-right, where the 'right' side isn't done if the
left side fails...
If I wanted to use "==" instead of assignment, I would have preferred '&&' over 'and'. I try to use 'and' && 'or' when I don't want them interfering with an assignment.