in reply to Re^4: Strange Regex Behavior
in thread Strange Regex Behavior
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 Section
Seekers of Perl Wisdom