Como posso contar substrings sobrepostos no Perl?
Eu preciso implementar um programa para contar a ocorrência de uma substring em uma seqüência de caracteres em perl. eu o implementei da seguinte maneira
sub countnmstr
{
$count =0;
$count++ while $_[0] =~ /$_[1]/g;
return $count;
}
$count = countnmstr("aaa","aa");
print "$count\n";
Agora é isso que eu faria normalmente. no entanto, na implementação acima, quero contar a ocorrência de 'aa' em 'aaa'. aqui recebo a resposta como 1, que parece razoável, mas preciso considerar também os casos sobrepostos. portanto, o caso acima deve dar uma resposta como 2, pois existem dois 'aa' se considerarmos sobreposição.
alguém pode sugerir como implementar essa função?