Скрипт возвращает 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>;, скрипт будет работать как положено.

Другие вопросы по тегам