В общем, чтобы найти позиции символов в строке, вы можете сделать это следующим образом:
my $str = ...;
my @pos;
push @pos, pos $str while $str =~ /(?=[...])/g;
И тогда все позиции, с которыми сопоставлено регулярное выражение, будут в @pos.По крайней мере, с помощью этого метода вы не будете постоянно переписывать исходную строку.