无论值如何,脚本都返回false

时间:2015-12-03 05:14:10

标签: perl string-matching palindrome dna-sequence

我正在创建一个程序,确认给出的核苷酸序列是否是回文序列。该脚本创建一个反向补码并将其与原始序列进行比较,确认如果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

1 个答案:

答案 0 :(得分:5)

问题是,从<STDIN>阅读后,$seq也包含最终换行符。 如果您在行chomp($seq);之后添加my $seq = <STDIN>;,脚本将按预期运行。