Ah... yes. That would make it a bug. Sorry.
It doesn't seem to be the ternary operator causing the havoc, or pattern matching though:
$,=", "; my $i; print $i++, $i, $i++, $i, $i++, $i;
prints
0, 3, 1, 3, 2, 3
Using Dump, we can see that the optimizer is assuming that $1 must be constant for the length of time it takes to evaluate the list:
use Data::Dump::Streamer; my $i; print Dump \($i++, $i, $i++, $i, $i++, $i);
prints
$SCALAR1 = \do { my $v = 0 }; $SCALAR2 = \do { my $v = 3 }; $SCALAR3 = \do { my $v = 1 }; $SCALAR4 = $SCALAR2; $SCALAR5 = \do { my $v = 2 }; $SCALAR6 = $SCALAR2;
The autoincrement is also not a necessary ingredient:
use Data::Dump::Streamer; print Dump \("x"=~/(x)/, $1, "y"=~/(y)/, $1, "z"=~/(z)/, $1);
prints
$SCALAR1 = \do { my $v = 'x' }; $SCALAR2 = \do { my $v = 'z' }; $SCALAR3 = \do { my $v = 'y' }; $SCALAR4 = $SCALAR2; $SCALAR5 = \do { my $v = 'z' }; $SCALAR6 = $SCALAR2;
In reply to Re^5: Strange Regex Behavior
by quester
in thread Strange Regex Behavior
by Manchego
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |