in reply to Re^11: Using pos() inside regexp (no /e)
in thread Using pos() inside regexp
Here is the documentation, how would you change it?
Returns the offset of where the last "m//g" search left off for the variable in question ($_ is used when the variable is not specified). Note that 0 is a valid match offset. "undef" indicates that the search position is reset (usually due to match failure, but can also be because no match has yet been run on the scalar). "pos" directly accesses the location used by the regexp engine to store the offset, so assigning to "pos" will change that offset, and so will also influence the "\G" zero-width assertion in regular expressions. Because a failed "m//gc" match doesn't reset the offset, the return from "pos" won't change either in this case. See perlre and perlop.Consider this with the sentence in bold above
so the engine matches, then evaluates the code, then advances pos, and it doesn't care if your code changed pos in the meantime$ perl -le"$_ = 123456; s/./warn pos; warn q, ,, pos=0;/eg" 0 at -e line 1. 0 at -e line 1. 1 at -e line 1. 0 at -e line 1. 2 at -e line 1. 0 at -e line 1. 3 at -e line 1. 0 at -e line 1. 4 at -e line 1. 0 at -e line 1. 5 at -e line 1. 0 at -e line 1.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^13: Using pos() inside regexp (no /e)
by andal (Hermit) on Oct 18, 2010 at 11:30 UTC | |
by ikegami (Patriarch) on Oct 19, 2010 at 03:22 UTC |