Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2017-11-19 05:03 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (278 votes). Check out past polls.