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
| #!/usr/bin/perl
use warnings;
use strict;
sub complement {
$_[0] =~ y/CGATcgat/GCTAgcta/;
return $_[0];
}
sub match {
my ($s1, $s2) = @_; # TACGCAGAGGCCTAAGTAAATAGTC, GAATTTCATTTACCGGATGCGTCTCC
#$s2 = reverse_complement $s2 ;
complement $s2;
print "$s1\n";
my $s2l = length $s2;
for (my $length = $s2l; $length; $length--) { # start from the longest possible substring
for my $start (0 .. $s2l - $length) { # starting position of the matching substring
my $substr = substr $s2, $start, $length;
#print "$substr\n";
my $pos = index $s1, $substr; # searches for one string within another
if ($pos + 1) {
my $length_sub = length $substr;
print "$pos\t$length_sub\n";
}
}
}
}
print match('TACGCAGAGGCCTAAGTAAATAGTC',
'GAATTTCATTTACCGGATGCGTCTCC')
,"\n"; |
Partager