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.