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). This offset is in characters unless the
(no-longer-recommended) use bytes pragma is in effect, in
which case the offset is in bytes. 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.