>perl -wMstrict -le "my ($alts) = map qr{ $_ }xms, join q{ | }, qw(AAA AAC AAAAA AAAA ACA CCC CAA) ; print $alts; ;; my @strings = \qw(AAAAAT AAAACACA CAACAAA); my %counts = count_em($alts, @strings); ;; print qq{for count_em}; for my $k (sort keys %counts) { print qq{ in all strings: '$k' = $counts{$k}}; } ;; sub count_em { my $alts = shift; ;; local our %count; use re 'eval'; ${$_} =~ m{ ($alts) (?{ ++$count{$^N} }) (*FAIL) }xmsg for @_; return %count; } " (?^msx: AAA | AAC | AAAAA | AAAA | ACA | CCC | CAA ) for count_em in all strings: 'AAA' = 6 in all strings: 'AAAA' = 3 in all strings: 'AAAAA' = 1 in all strings: 'AAC' = 2 in all strings: 'ACA' = 3 in all strings: 'CAA' = 2