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行尝试了一些不同的东西,但没有结果.有什么建议?(我是在提示中写的,一切看起来都正确......)
我有一些与您的代码相关的注释:
使用.pl扩展名命名脚本而不是.txt.这是Perl脚本的公认接受扩展(.pm对于Perl模块,具有可重用代码的库)
始终使用use strict; use warnings;.启动脚本.这些句子可以帮助您避免常见错误.
在使用它之前声明你的变量(参见我的函数)
chomp您的输入来自最后STDIN删除换行符.
对反向函数的调用是奇怪的.我认为那$DNA =~ reverse ($DNA);应该是$DNA = reverse ($DNA);
的逆转功能是比较常见的用Perl阵列中使用; 用一个字符串你可以获得该字符串的反转版本,就像我预期的那样.
该打印功能可以采取的参数列表,这样你就可以用一句话打印几件事情
您可以在许多地方省略括号,例如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世界,并准备好享受您的旅行.