use strict; use warnings; my @str = qw( ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC ); foreach my $str ( @str ){ print "$str\n", $str =~ s/([A-C])(\1{2,})/$1.(1+length($2))/reg, "\n\n"; } __END__ ABBCBCAAAAABBCBCACCCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCAABC ABBCBCA5BBCBCAC3A5CA5B5A5BBA8BBC3ACCAABC BCCCBCAACAABBBCAAACCAAAAACAAAAABBBBBAAAAABBAAAAAAAABBCCCACCABBC BC3BCAACAAB3CA3CCA5CA5B5A5BBA8BBC3ACCABBC ABCCBBBAAAABBABCACABCCCCCCAAAAABBCBBCCCCAAAAAAAAAAAAACCCACCACCC ABCCB3A4BBABCACABC6A5BBCBBC4A13C3ACCAC3