my $first_counter = 0; my $second_counter = 0; my $sequence = "GGGGGGGAGAAAAAAAAAAAAAAAGAAGGA"; # This is what I initially did, but did not get the right answer $first_counter++ while $sequence =~/AAAAA/g; #Here I get 3 # Because I want to count the overlapping AAAAA in the sequence I hunted around and found this solution $sequence =~ /AAAAA(?{$second_counter++})(?!)/; # This gives the right answer of 11 print "First counter: $first_counter\n"; print "Second counter: $second_counter\n"; #### my @real_count = (0,0,0,0); my $sequence = "GGGGGGGAGAAAAAAAAAAAAAAAGAAGGA"; my @pattern; $pattern[0] = "AAAAA"; $pattern[1] = "GGGGG"; $pattern[2] = "GGAGA"; $pattern[3] = "GAAGG"; for (my $i=0; $i <= 3; $i++) { $sequence =~ /$pattern[$i](?{$real_count[$i]++})(?!)/; } foreach (@real_count) { print "$_\n"; }