Скрипт возвращает false независимо от значения
Я создаю программу, которая подтверждает, является ли данная нуклеотидная последовательность палиндромом или нет. Сценарий создает обратное дополнение и сравнивает его с исходной последовательностью, подтверждая, что это палиндром, если 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 ответ
Проблема в том, что после прочтения <STDIN>
, $seq
также содержит последний перевод строки. Если вы добавите chomp($seq);
после линии my $seq = <STDIN>;
, скрипт будет работать как положено.