in reply to Why does the first $c evaluate to the incremented value in [$c, $c += $_] ?
As you can see, $c has already been incremented by the time you assign it to the array (twice). It's unwise to modify a variable in the same expression as you read it.
You'll get the same result from
use Data::Alias qw( alias ); my @stack; alias push @stack, $c; alias push @stack, $c += 1; my @a = splice(@stack);
Now consider my @a = ( $c + 0, $c += 1 );. It does the following:
use Data::Alias qw( alias ); my @stack; alias push @stack, $c + 0; alias push @stack, $c += 1; my @a = splice(@stack);
This places the original and the new value of $c in the array.
|
|---|