$_ = "abcdefg";
my @some_array = (1 ..2);
while (m/./g) {
for (@some_array) { # implicitly localized - works
# do something;
}
print $&;
}
to this (stupid but more or less equivalent) code:
$_ = "abcdefg";
while (m/./g) {
my @some_array = (1 ..2);
while (local $_ = shift @some_array) { # manually localized - break
+s
# do something;
}
print $&;
}
Some of the parsing code i've written makes heavy use of $_ and then you can run into this problem when you're refactoring.
update: the above code breaks, because it's not the pos() function that's broken, but the match position field itself gets reset by localizing a variable - in other words, the while (m/./g) statement will loop forever.
|