c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; SEQUENCE: for my $s (qw( A AA AAAAAAAA ATCG AATTCCGG AAAAAAAATTTTTTTT AAA AAAA AAAAA AAAAAA AAAAAAA TAAA TAAAA TAAAAA TAAAAAA TAAAAAAA AAAT AAAAT AAAAAT AAAAAAT AAAAAAAT TAAAT TAAAAT TAAAAAT TAAAAAAT TAAAAAAAT ATTAAATTTTCCCCCGGGGGGAAAAAAATTTTTTTT ATTAAACTTTTGCCCCCAGGGGGGCAAAAAAATTTTTTTT ATTAAACCTTTTGGCCCCCAAGGGGGGCCAAAAAAATTTTTTTT ), @ARGV) { my @runs; push @runs, [ $2, $-[2] ] while $s =~ m{ (?: \G | (.) (?! \1)) \K ((.) \3{2,6} (?! \3)) }xmsg; ;; print qq{$s}; print qq{no run(s) \n} and next SEQUENCE unless @runs; for my $ar_run (@runs) { my ($run, $offset) = @$ar_run; printf qq{%*s at offset %d \n}, $offset+length($run), qq{$run}, $offset; } print ''; } " A no run(s) AA no run(s) AAAAAAAA no run(s) ATCG no run(s) AATTCCGG no run(s) AAAAAAAATTTTTTTT no run(s) AAA AAA at offset 0 AAAA AAAA at offset 0 AAAAA AAAAA at offset 0 AAAAAA AAAAAA at offset 0 AAAAAAA AAAAAAA at offset 0 TAAA AAA at offset 1 TAAAA AAAA at offset 1 TAAAAA AAAAA at offset 1 TAAAAAA AAAAAA at offset 1 TAAAAAAA AAAAAAA at offset 1 AAAT AAA at offset 0 AAAAT AAAA at offset 0 AAAAAT AAAAA at offset 0 AAAAAAT AAAAAA at offset 0 AAAAAAAT AAAAAAA at offset 0 TAAAT AAA at offset 1 TAAAAT AAAA at offset 1 TAAAAAT AAAAA at offset 1 TAAAAAAT AAAAAA at offset 1 TAAAAAAAT AAAAAAA at offset 1 ATTAAATTTTCCCCCGGGGGGAAAAAAATTTTTTTT AAA at offset 3 TTTT at offset 6 CCCCC at offset 10 GGGGGG at offset 15 AAAAAAA at offset 21 ATTAAACTTTTGCCCCCAGGGGGGCAAAAAAATTTTTTTT AAA at offset 3 TTTT at offset 7 CCCCC at offset 12 GGGGGG at offset 18 AAAAAAA at offset 25 ATTAAACCTTTTGGCCCCCAAGGGGGGCCAAAAAAATTTTTTTT AAA at offset 3 TTTT at offset 8 CCCCC at offset 14 GGGGGG at offset 21 AAAAAAA at offset 29 #### my @runs; push @runs, [ $2, $-[2] ] while $s =~ m{ (?: \G | (.) (?! \1)) \K ((.) \3{2,6} (?! \3)) }xmsg; #### my @runs; push @runs, [ $1, $-[1] ] while $sequence =~ m{ ((.) (?