in reply to Why does the first $c evaluate to the incremented value in [$c, $c += $_] ?

Very strange indeed. And it doesn't even have to be a state variable, i.e.

my $c = 0; my @partitions = map { [$c, $c += $_] } @widths;

gives the same result.

Whereas [$c+0, $c += $_] produces

[0, 2] [2, 8] [8, 13] [13, 20]
and so does [my $tmp = $c, $c += $_]

Replies are listed 'Best First'.
Re^2: Why does the first $c evaluate to the incremented value in [$c, $c += $_] ?
by derby (Abbot) on Mar 04, 2014 at 21:23 UTC

    Wild guess here but since the anonymous array is on the right side of a list operator, then the comma has really low precedence -- lower than assignment. By adding the +0, you give both terms equal precedence so it goes back to leftward precedence? Well ... that's my guess.

    -derby

    update: what Eily says makes better sense given the simple example of

    use Data::Dumper; my $c = 0; my $d = [ $c, $c += 2 ]; print Dumper( $d );