#!/usr/bin/perl open (TEXT, "sample.txt")||die"Cannot"; my $pat=qr'^(Contig +([0-9]*))\s'; my $count = 0; for my $n (5..20) { my $re = qr /[CAGU]{$n}/; $regexes[$n-5] = $re; } NEXTLINE: while ($count < 1000) { my $line = ; $count++; foreach my $value (@regexes) { my $start = 0; while ($line =~ /$value/g) { my $endline = $'; my $match = $&; my $revmatch = reverse($match); $revmatch =~ tr/CAGU/GUCA/; if ($endline =~ /^([CAGU]{0,15})($revmatch)/) { $start = 1; my $palindrome = $match . "*" . $1 . "*" . $2; $palhash{$palindrome}++; } } if ($start == 0) { goto NEXTLINE; } } } print "L.$pat\n"; close TEXT; while(($key, $value) = each (%palhash)) { print "$key => $value\n"; } exit; #### Contig1 NAAAAGUAUAGGCUCGAGAGAGAAGUCCUGGCCUAUCGGAUUACACCACGNGUCAGAUCU GUCACUUCAAGGAGCUUUUCAGCGUCUUUGACAAGAAUGGCNGACGGUUGCCGUCCUUCC AGGGAGAUUGGGGCAGAAUUCGAGUCACUGCCNGUGGAUUCCUUAGUGAUCCAGAUGUCG GAUAUAUGUCCAAUAUAGCCAAUNGUUGUUGGACAUAGCACCAUCAAUCAUCAAGAUUGC UAUUUCGCCACCUCNAUGUAGAGUGGAAGAUCCAAAUGCGGGAAUGGAUUUCAAGGUUGG UUAAGNAUGGGGGCAGCGGAUGAGUUAACAGUACAGCAAGCUAGGCAGCUCCAUUUNUGA CUUGGAAUCUUCAUACGAUUCAUUUAUGGCAGCUUUGCCUAAUGUUGNGUACUUGAAAGU AAAAUCCAAUAUUUCCAUAUUUUUGUUUAGUGCUUCAAAUCUGGUGAGAACGGAUGUUUU AAGUUGGUAAAACAGUGUAUUCAUUUUGAAGAGUUCUUGGAUUGUUUAAAGCUCAAGAUG CUAUUUGUGUGCUGCUGAUUUGUCGUUCUAUGAGAAAGAAUAUAUGCUUUAAUUUGGUUU UGUAAUAUUAANUAUAUUCAUUCCCCUUGAUUGUUGUUUUGUNNNNNNNNNNNNNNNNNN NN Contig2 NUGUUUUUUCUUUACUCGGUGUCUCGUCGGUACUCGACGACUAAANGGGNUAUAGGAGGG GCGCGAACGNCGAAACGGGAGUGGGUACAAAGCGUGGUCCNGGAUAGACGAGAGCGGACG CGCCGGGUGAAGCUCGGCGCGACGCGAGGCANAGAGGGGCCCGCAGANNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNAAGNCCCAGGAUGCGCAUCGCCCCAGGGGUGAAACCCCCAUCCCAAAGAA UGCUNCUCCUNCGCGGUAGGGCAGCUNCCCGAAGCACCCGACCGCUUUNAGGCCANCCAU AUGAUAAAGNAACGUUGUGUGGUGAAUGGGAUGAAGAUGAUUGAAGNAGAGUAGAGUUUU GCCUCUANAUCUUGAUAUGUAUAUCUUUAAUUAUAUAANUAUAGCUCAUUAUAUUGUGCN UUAGCAUGUAAUAUUUAAGUCUAAAAUUAANUGGACCUCAGCUCGAGGUCGNCAUUCUUU GUUACUUUAGAUCAGAUCUGUANUUCCCUUUGUAUUGUUCAGGNUUUCCAACCAUAAAUU AUUGGUACUAUCUUNAUUGUUAUCAUAAUUGACGUGUGUUUAAGUUCNNNNNNNNNNNNN NNNNN #### Contig1 GACGG*UUG*CCGUC => 1 GAUGC**GCAUC => 1 CGCCG*GGUGAAGCU*CGGCG => 1 Contig2 CAAUC*AUCAA*GAUUG => 1 GAUAU*GU*AUAUC => 1 AAAAU*CCAAUAUUUCCAU*AUUUU => 1