Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re: question 1st - undefined behaviour

by ikegami (Pope)
on Sep 24, 2013 at 19:03 UTC ( #1055526=note: print w/replies, xml ) Need Help??

in reply to question 1st - undefined behaviour

If you want to see what's happening, you can step through the following:
use strict; use warnings; use Data::Alias qw( alias ); my @stack; # Increments the scalar on the stack. sub preinc { alias my $i = pop(@stack); ++$i; alias push @stack, $i; } # Increments the scalar on the stack. # Returns a new scalar with the original # value of the scalar on the stack. sub postinc { alias my $i = pop(@stack); my $j = $i; alias push @stack, $j; ++$i; } sub add { alias my $j = pop(@stack); alias my $i = pop(@stack); my $sum = $i + $j; alias push @stack, $sum; } { my $x=5; # $x + ++$x + $x++ alias push @stack, $x; alias push @stack, $x; preinc; add; alias push @stack, $x; postinc; add; print "$stack[-1]\n"; # 18 }

(alias $x = $y; represents the copying of a C pointer rather than copying the actual scalar.)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1055526]
and the radiator hisses contentedly...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2018-06-22 01:57 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (120 votes). Check out past polls.