=over =item pos SCALAR X<pos> X<match, position> =item pos Returns the offset of where the last C<m//g> search left off for the variable in question (L<C<$_>|perlvar/$_> is used when the variable is not specified). This offset is in characters unless the (no-longer-recommended) L<C<use bytes>|bytes> pragma is in effect, in which case the offset is in bytes. Note that 0 is a valid match offset. L<C<undef>|/undef EXPR> 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). L<C<pos>|/pos SCALAR> directly accesses the location used by the regexp engine to store the offset, so assigning to L<C<pos>|/pos SCALAR> will change that offset, and so will also influence the C<\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 L<C<pos>|/pos SCALAR> during the current match, such as in C<(?{pos() = 5})> or C<s//pos() = 5/e>. Setting L<C<pos>|/pos SCALAR> also resets the I<matched with zero-length> flag, described under L<perlre/"Repeated Patterns Matching a Zero-length Substring">. Because a failed C<m//gc> match doesn't reset the offset, the return from L<C<pos>|/pos SCALAR> won't change either in this case. See L<perlre> and L<perlop>. =back