pos
- pos
Returns the offset of where the last
m//gsearch left off for the variable in question ($_is used when the variable is not specified). Note that 0 is a valid match offset.undefindicates 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).posdirectly accesses the location used by the regexp engine to store the offset, so assigning toposwill change that offset, and so will also influence the\Gzero-width assertion in regular expressions. Both of these effects take place for the next match, so you can't affect the position withposduring the current match, such as in(?{pos() = 5})ors//pos() = 5/e.Setting
posalso resets the matched with zero-length flag, described under Repeated Patterns Matching a Zero-length Substring in perlre.Because a failed
m//gcmatch doesn't reset the offset, the return fromposwon't change either in this case. See perlre and perlop.