my $dna = 'ACGTACGT';
my $cmp = 'TGCATGCA';
(my $recmp = $cmp) =~ tr[ACGT][TGCA];
print 'Matched' if $recmp eq $dna;
####
#! perl -slw
use strict;
while( !eof DATA ) {
my $dna = ;
my $cmp = ;
(my $temp = $cmp) =~ tr[ACGT][TGCA];
if ($dna eq $temp) {
print "$cmp is an accurate compliment of \n$dna";
} elsif (length $dna != length $cmp) {
print "$cmp is a different length to \n$dna";
} else {
for my $pos(0 .. length $dna) {
my $c1 = substr($dna, $pos, 1);
my $c2 = substr($cmp, $pos, 1);
print "$c1-$c2 (pos:$pos) is a mismatch"
unless $c1 eq (substr($temp, $pos, 1));
}
}
}
__DATA__
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCAG
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCA
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCCTAGGCTATATCTGCAGACGATCAGCAGCAAACGGATATCGGATCTAGGATCGATCAG
##
##
C:\test>243661
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCAG
is an accurate compliment of
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCA
is a different length to
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
C-C (pos:22) is a mismatch
A-G (pos:25) is a mismatch
A-A (pos:59) is a mismatch
G-G (pos:70) is a mismatch
C:\test>
##
##
#! perl -sw
use strict;
while( !eof DATA ) {
my $dna = ;
my $cmp = ;
(my $temp = $cmp) =~ tr[ACGT][TGCA];
if ($dna eq $temp) {
print "\nNo mismatches found\n";
print $dna;
print $cmp;
} else {
($temp ^= $dna) =~s[[^\0]][*]g;
print "\nAsterists (*) indicate mismatches\n";
print $dna;
print $temp, $/;
print $cmp;
}
}
__DATA__
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCAG
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCA
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCCTAGGCTATATCTGCAGACGATCAGCAGCAAACGGATATCGGATCTAGGATCGATCAG
##
##
C:\test>243661-2
No mismatches found
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCAG
Asterists (*) indicate mismatches
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
**
TGACCATGTATCGATCGATATCGTATGCTATATCTGCAGACGATCAGCAGCAAACGGATTTCGGATCTAGCATCGATCA
Asterists (*) indicate mismatches
ACTGGTACATAGCTAGCTATAGCATACGATATAGACGTCTGCTAGTCGTCGTTTGCCTAAAGCCTAGATCGTAGCTAGTC
* * * *
TGACCATGTATCGATCGATATCCTAGGCTATATCTGCAGACGATCAGCAGCAAACGGATATCGGATCTAGGATCGATCAG
C:\test>