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

Re: ++ turns undef into 0 first

Thread Previous | Thread Next
From:
Rafael Garcia-Suarez
Date:
August 19, 2005 05:01
Subject:
Re: ++ turns undef into 0 first
Message ID:
20050819140130.18bc0a62@grubert.mandrakesoft.com
hv@crypt.org wrote:
> 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.

Yes, that makes sense to me as well.
As Jan Dubois put it, "Does the numeric context change the
value that the variable had retroactively?"

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