c:\@Work\Perl\monks>perl -wMstrict -le "use List::MoreUtils qw(uniq); use Data::Dump; ;; use constant DIPEPS => qw(AA AL DA DE DV VD DW QD SD HD ED DY VE EN EI KE NV VP FV SS WK KK); use constant N_DIPEPS => scalar DIPEPS; ;; my ($dipep) = map qr{ (?i) (?: $_) }xms, join '|', DIPEPS ; ;; my %count; for my $seq (qw(AAALVDENEC AATLVDEGDG)) { $count{$seq} = uniq $seq =~ m{ (?= ($dipep)) }xmsg; } dd \%count; ;; for my $seq (keys %count) { my $sum = $count{$seq}; my $abs = N_DIPEPS - $sum; print qq{$seq: sum = $sum, abs = $abs}; } " { AAALVDENEC => 5, AATLVDEGDG => 3 } AAALVDENEC: sum = 5, abs = 17 AATLVDEGDG: sum = 3, abs = 19