|Just another Perl shrine|
Re^2: Need help on hashes.by quester (Vicar)
|on Feb 04, 2008 at 04:07 UTC||Need Help??|
Actually, no, it isn't necessary to include that if statement.
Incrementing an undef value is such a common annoyance that recent releases of perl special-case it. It seems to have been documented somewhere between version 5.004 and 5.8.8. Quoting directly from perlop, which is currently for version 5.10.0,
The auto-increment operator has a little extra builtin magic to it....
undef is always treated as numeric, and in particular is changed to 0 before incrementing (so that a post-increment of an undef value will return 0 rather than undef).
(Update:) Now that I think of it, the conversion to boolean in
is also a special case: undef is being silently converted to false, even when using warnings and strict. If it weren't, you would have to say
which would also be fairly annoying.