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{
((.) (?