use warnings; use strict; my @real_count = (0,0,0,0,); my $sequence = "GGGGGGGAGAAAAAAAAAAAAAAAGAAGGA"; my @patterns = qw/AAAAA GGGGG GGAGA GAAGG/; for my $i ( 0 .. $#patterns ) { while ( $sequence =~ m/$patterns[$i]/g ){ $real_count[$i]++; ## reset start position for next global match search pos($sequence) -= (length$patterns[$i]) -1; } } foreach (@real_count) { print "$_\n"; ## prints ## 11 ## 3 ## 1 ## 1 }