我正在创建一个程序,确认给出的核苷酸序列是否是回文序列。该脚本创建一个反向补码并将其与原始序列进行比较,确认如果2匹配则它是回文。问题是我的脚本总是声明它不是回文,即使它是。
#!/usr/bin/perl
use strict;
print "Enter the sequence\n";
my $seq = <STDIN>;
my $r=reverse($seq);
$r =~ tr/ACTGactg/TGACtgac/;
print "Reverse complement: $r \n";
if ($r eq $seq) {
print "The sequence is a palindrome\n";
} else {
print "The sequence is NOT a palindrome\n";
}
预期产出的例子:
Enter the sequence:
CG
Reverse complement:
CG
The sequence is a palindrome
答案 0 :(得分:5)
问题是,从<STDIN>
阅读后,$seq
也包含最终换行符。
如果您在行chomp($seq);
之后添加my $seq = <STDIN>;
,脚本将按预期运行。