也许这就是你想要的(粗略地):
#!/usr/bin/env perl
use strict;
use warnings;
die unless @ARGV == 2 && length $ARGV[0] == length $ARGV[1];
my @seq1 = split //, $ARGV[0];
my @seq2 = split //, reverse $ARGV[1];
my @comp;
for my $n (0..@seq1-1) {
if ( ($seq1 [$n] eq 'A' && $seq2 [$n] eq 'T')
|| ($seq1 [$n] eq 'T' && $seq2 [$n] eq 'A')
|| ($seq1 [$n] eq 'G' && $seq2 [$n] eq 'C')
|| ($seq1 [$n] eq 'C' && $seq2 [$n] eq 'G') ) {
push @comp, $seq2[$n];
}
else {
push @comp, '-';
}
}
print @seq1, "\n", @comp, "\n";
...运行时:
# ./compseq CGTAAATCTATCTT CATGCGTCTTTACG
CGTAAATCTATCTT
GCATTT------A-