在单行Perl中打印反向DNA补体

soo*_*sus 1 bash perl sequence

我想写一个快速的单行perl脚本来产生DNA序列的反向互补.但是,以下内容对我不起作用:

$ cat sample.dna.sequence.txt | perl -ne '{while (<>) {$seq = $_; $seq =~ tr /atcgATCG/tagcTAGC/; $revComp = reverse($seq); print $revComp;}}'
Run Code Online (Sandbox Code Playgroud)

有什么建议?我知道

tr -d "\n " < input.txt | tr "[ATGCatgcNn]" "[TACGtacgNn]" | rev
Run Code Online (Sandbox Code Playgroud)

在bash中工作,但是我想用perl来做这个练习.

ike*_*ami 7

你的问题是,是,您同时使用-nwhile (<>) { },所以你最终while (<>) { while (<>) { } }.


如果你知道该怎么做<file.txt,为什么要切换到cat file.txt|?!


perl -0777ne's/\n //g; tr/ATGCatgcNn/TACGtacgNn/; print scalar reverse $_;' input.txt
Run Code Online (Sandbox Code Playgroud)

要么

perl -0777pe's/\n //g; tr/ATGCatgcNn/TACGtacgNn/; $_ = reverse $_;' input.txt
Run Code Online (Sandbox Code Playgroud)

或者,如果您不需要删除换行符:

perl -pe'tr/ATGCatgcNn/TACGtacgNn/; $_ = reverse $_;' input.txt
Run Code Online (Sandbox Code Playgroud)