Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^5: $1 not "freezing" in an addition

by grondilu (Pilgrim)
on Dec 14, 2012 at 15:36 UTC ( #1008859=note: print w/ replies, xml ) Need Help??


in reply to Re^4: $1 not "freezing" in an addition
in thread $1 not "freezing" in an addition

Interesting. This gave me the idea of trying this code:

$_ = 1; print $_ + $_++;

Amazingly enough, this prints 3, not 2

But this does print 2:

$_ = 1; print 0+$_ + $_++;


Comment on Re^5: $1 not "freezing" in an addition
Select or Download Code
Re^6: $1 not "freezing" in an addition
by tobyink (Abbot) on Dec 14, 2012 at 16:03 UTC

    I can count as high as 7...

    sub r { $_[0] } # no-op? sub rr :lvalue { $_[0] } # no-op? $_ = 1; print ($_) + $_++; $_ = 1; print r($_) + $_++; $_ = 1; print $_ + $_++; $_ = 1; print $_ + ++$_; $_ = 1; print r(++$_) + r(++$_); $_ = 1; print ++$_ + ++$_; $_ = 1; print rr(++$_) + rr(++$_)++;

    (Requires Perl 5.16, though you can get up to 6 in Perl 5.10 and above.)

    Update: 0..10

    use v5.16; no v5.17; no strict 'subs'; sub r { $_[0] } # no-op? sub rr :lvalue { $_[0] } # no-op? $_ = 1; say ( $ ++ _ ) + $_++; $_ = 1; say ($_) + $_++; $_ = 1; say r($_) + $_++; $_ = 1; say $_ + $_++; $_ = 1; say $_ + ++$_; $_ = 1; say r(++$_) + r(++$_); $_ = 1; say ++$_ + ++$_; $_ = 1; say rr(++$_) + rr(++$_)++; $_ = 1; say ++rr(++$_) + rr(++$_); $_ = 1; say ++rr(++$_) + rr(++$_)++; $_ = 1; say ++rr(++$_) + ++rr(r(rr(++$_)++));
    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1008859]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (11)
As of 2014-11-27 18:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (186 votes), past polls