1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #!/usr/local/bin/perl
use strict;
use warnings;
my $sequence = "TGTGCAGATCGATACAATGDTAGATACAGTTCGTAGAATACCTAGCTAGCTAGCTGCATTTTAGGACACCAACAGTCGCTAGAGGAATCGATAGCTCGATAATGCCTAGTA";
my $forward = 'AGATACAGTTCGTAXAATACC';
my $reverse = 'CCAYCAGTCGCTAGAGGAATC';
my $l_for= length($forward);
my @a_forward;
for (my $i=0; $i<$l_for; $i++){
for (my $j=$i+1; $j<$l_for; $j++){
my $start = substr($forward, 0, 0+$i);
my $middle = substr($forward, $i+1, $j-$i-1);
my $end = substr($forward, $j+1);
my $f = join('.', ($start, $middle, $end));
push (@a_forward, $f);
}
}
my $for_regexp = '(';
$for_regexp .= join('|', @a_forward);
$for_regexp .= ')';
if($sequence =~ /$for_regexp/){
my $forward = $1;
$sequence =~ s/^(.*)$forward/$forward/;
}
my $l_rev= length($reverse);
my @a_reverse;
for (my $i=0; $i<$l_rev; $i++){
for (my $j=$i+1; $j<$l_rev; $j++){
my $start = substr($reverse, 0, 0+$i);
my $middle = substr($reverse, $i+1, $j-$i-1);
my $end = substr($reverse, $j+1);
my $f = join('.', ($start, $middle, $end));
push (@a_reverse, $f);
}
}
my $rev_regexp = '(';
$rev_regexp .= join('|', @a_reverse);
$rev_regexp .= ')';
if($sequence =~ /$rev_regexp/){
my $reverse = $1;
$sequence =~ s/$reverse(.*)$/$reverse/;
}
print "Sous-séquence : ".$sequence."\n"; |
Partager