Erm, undef without parens returns a perfectly valid value in that context. The problem is that it's being coerced into a numeric value because of the == which triggers the warning.
What you're thinking of is using undef or shift as a hash key ($h{undef}) or to the left of a => (%a = ( undef => 1 )) where there is some bareword magic going on (strict or no). In those cases it is necessary to use parens or a + to disable the magic.
Update: And you can verify it by looking at the different errors produced. Bareword-ness doesn't enter into it.
freebie:~ 746> cat baz use warnings; if( 5 == undef ) { 1 } if( 5 == "undef" ) { 1 } freebie:~ 747> perl baz Argument "undef" isn't numeric in numeric eq (==) at baz line 3. Use of uninitialized value in numeric eq (==) at baz line 2.
The first one gripes about comparing against undef, the second because you're comparing a non-numeric value numerically.
--
We're looking for people in ATL
In reply to Re^2: Warning for checking with undef
by Fletch
in thread Warning for checking with undef
by icg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |