pos 
pos SCALAR
posThis function returns the location in
SCALAR where the last m//g search over
SCALAR left off.
It returns the offset of the character (codepoint)
after the last one matched. (That is, it’s
equivalent to length($`) +
length($&).) This is the offset where the next m//g search on that string will start.
Remember that the offset of the beginning of the string is 0. Note that 0 is a valid match offset.
undef indicates that the search
position is reset (usually due to match failure, but it can also be
because no match has been run on the scalar yet).
For example:
$graffito = "fee fie foe foo";
while ($graffito =~ m/e/g) {
say pos $graffito;
}prints 2, 3, 7, and
11, the offsets of each of the
codepoints following an “e”. The
pos function may be assigned a value
to tell the next m//g where to
start:
$graffito = "fee fie foe foo";
pos $graffito = 4; # Skip the fee, start at fie
while ($graffito =~ m/e/g) {
say pos $graffito;
}This prints only 7 and 11. The regular expression assertion \G matches only at the location currently
specified by pos for the string being
searched. See the section Positions in Chapter 5.
Note that we said codepoints, not characters. We didn’t want to confuse you. Codepoints are programmer-visible characters, some of which may even be invisible to users. A user-visible character, usually called graphemes or grapheme clusters, may well comprise multiple ...