我是第一次使用Perl

时间:2014-09-06 07:22:23

标签: perl bioinformatics

我参加了生物信息学课程,并且我继续在ReverseComp.txt第4行调用了#34;未定义的子程序& 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";

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

1 个答案:

答案 0 :(得分:7)

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

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

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

  3. 在使用之前声明您的变量(请参阅my function

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

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

  6. reverse function更常用于Perl数组;使用字符串,您可以获得该字符串的反转版本,就像我预期的那样。

  7. print function可能会列出参数列表,因此您可以用一个句子打印多个内容

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

  9. 与您的问题相关,我认为您的脚本是正确的,因为打印函数存在于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";
    

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