develooper Front page | perl.perl5.porters | Postings from August 2005

Re: ++ turns undef into 0 first

Thread Previous | Thread Next
From:
hv
Date:
August 19, 2005 04:51
Subject:
Re: ++ turns undef into 0 first
Message ID:
200508191157.j7JBv7U02893@zen.crypt.org
Rafael Garcia-Suarez <rgarciasuarez@gmail.com> wrote:
:On 8/18/05, Peter Scott <Peter@psdt.com> wrote:
:> This recently bit me:
:> 
:> $ perl -wle 'print 42 if defined($h{foo}++)'
:> 42
:> 
:> Now, before thousands of you reach for the flamethrowers, yes, I know
:> - now - that this is documented.  I found it in perlop right where it
:> ought to be:
:> 
:> | 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).
:
:This was documented by Hugo as change 19014 :
:http://public.activestate.com/cgi-bin/perlbrowse?patch=19014
:Hugo, any comment on this ?

I'd much rather the behaviour were as Peter requests, but my synopsis
in the thread covers my reasoning.

Hugo

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About