$ perl -Mstrict -Mwarnings -E ' my $buf = q{aXa}; while ($buf =~ /a/gp) { say q{pos($buf):}; say pos($buf); say q{${^MATCH}:}; say ${^MATCH}; } ' pos($buf): 1 ${^MATCH}: a pos($buf): 3 ${^MATCH}: a