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?

questionAnswers(6)

yourAnswerToTheQuestion