我是第一次使用Perl

Ben*_*man 3 perl bioinformatics

我参加了一个Bioinformatics课程,并且我继续在ReverseComp.txt第4行调用"Undefined subroutine&main :: Print".错误

# ReverseComp.txt => takes DNA sequence from user
# and returns the reverse complement

print ("please input DNA sequence:\n");
$DNA =<STDIN>;

$DNA =~tr/ATGC/TACG/;   # Find complement of DNA sequence

$DNA =~reverse ($DNA);  # Reverse DNA sequence

print ("Reverse complement of sequence is:\n");

print $DNA."\n";
Run Code Online (Sandbox Code Playgroud)

这是我的代码,我用第4行尝试了一些不同的东西,但没有结果.有什么建议?(我是在提示中写的,一切看起来都正确......)

Mig*_*Prz 7

我有一些与您的代码相关的注释:

  1. 使用.pl扩展名命名脚本而不是.txt.这是Perl脚本的公认接受扩展(.pm对于Perl模块,具有可重用代码的库)

  2. 始终使用use strict; use warnings;.启动脚本.这些句子可以帮助您避免常见错误.

  3. 在使用它之前声明你的变量(参见我的函数)

  4. chomp您的输入来自最后STDIN删除换行符.

  5. 对反向函数的调用是奇怪的.我认为那$DNA =~ reverse ($DNA);应该是$DNA = reverse ($DNA);

  6. 逆转功能是比较常见的用Perl阵列中使用; 用一个字符串你可以获得该字符串的反转版本,就像我预期的那样.

  7. 打印功能可以采取的参数列表,这样你就可以用一句话打印几件事情

  8. 您可以在许多地方省略括号,例如reverse($a)与...相同reverse $a.两者都有效,但后者更适合Perl编写代码的风格.在Perl的风格指南是推荐阅读

与您的问题相关,我认为您的脚本是正确的,因为打印函数存在于Perl中,并且您得到的错误与Print相关(使用大写,这在Perl中很重要).您可以运行您在此处发布的其他脚本.

这是您的脚本,其中已应用先前的注意事项(ReverseComp.pl):

use strict;
use warnings;

print "please input DNA sequence:\n";
chomp( my $DNA = <STDIN> );

$DNA =~ tr/ATGC/TACG/;    # Find complement of DNA sequence
$DNA = reverse $DNA;      # Reverse DNA sequence

print "Reverse complement of sequence is:\n", $DNA, "\n";
Run Code Online (Sandbox Code Playgroud)

无论如何,欢迎来到梦幻般的Perl世界,并准备好享受您的旅行.