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. Both of these effects take place for the next match, so
you can't affect the position with pos
during the current match,
such as in (?{pos() = 5})
or s//pos() = 5/e
.
Setting pos
also resets the matched with zero-length flag, described
under Repeated Patterns Matching a Zero-length Substring in perlre.
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.