Что происходит с символами, не указанными в первой части оператора Perl tr ///? - PullRequest
0 голосов
/ 24 ноября 2011

Я использую Perl для манипуляции со строками, что включает в себя использование функции reverse и tr для перевода моей строки. Сценарий читает некоторые строки, а затем выполняет следующее:

$revread = reverse($newword);
$revread =~ tr/TACGN/ATGCN/;

Таким образом, слово переворачивается, а затем переводится - обратное дополнение. У меня следующий вопрос:

Что, если

$revread=~ tr/TACG/ATGC/;

используется. В этом случае, если будет найдено «N», будет ли оно пропущено? так как в tr у меня нет ничего, чтобы перевести это на ИЛИ, оно будет напечатано так же, как "N".

Ответы [ 2 ]

5 голосов
/ 24 ноября 2011

Да, все, что не указано внутри tr, будет оставлено в покое.

Документация для tr/// довольно сложна, так как подробные примеры приведены в perldoc perlop , а не в обычном perldoc perlfunc

2 голосов
/ 24 ноября 2011

У Алекса Г правильный ответ: просто попробуй.

Я попробовал.Я обнаружил, что:

> perl -wE '$x = qq(abcdefg); $x=~ tr/abc/123/; say $x;'
123defg

Любые символы, не найденные в транслитерации, остаются без изменений.Документация здесь .

...