-1

我正在尝试使用 perl 从基因库数据库下载序列文件,但它显示错误。我没有任何指南来纠正我的程序。

谁能帮我这个?错误在第 6 行 ( use Bio::DB::GenBank;)

文件 accnumber.txt 在我的桌面上,我正在从桌面本身运行程序。我正在使用 CentOS。

#!usr/bin/perl -w

use strict;
use warnings;

use Bio::DB::GenBank;

open (INPUT_FILE, 'accnumber.txt');
open (OUTPUT_FILE, 'sequence_dwnl.fa');

while()
{
    chomp;
    my $line = $_;
    my @acc_no = split(",", $line);
    my $counter = 0;

    while ($acc_no[$counter])
    {
        $acc_no[$counter] =~ s/\s//g;

        if ($acc_no[$counter] =~ /^$/)
        {
            exit;
        }

        my $db_obj = Bio::DB::GenBank->new;
        my $seq_obj = $db_obj->get_Seq_by_acc($acc_no[$counter]);
        my $sequence1 = $seq_obj->seq;

        print OUTPUT_FILE ">"."$acc_no[$counter]","\n";
        print OUTPUT_FILE $sequence1,"\n";
        print "Sequence Downloaded:", "\t", $acc_no[$counter], "\n";

        $counter++;
    }
}

close OUTPUT_FILE;
close INPUT_FILE;

这些是我得到的错误:

Bareword "Bio::DB::GenBank" not allowed while "strict subs" in use at db.pl line 6.
Bareword "new" not allowed while "strict subs" in use at db.pl line 27.
Bareword "seq" not allowed while "strict subs" in use at db.pl line 29.
Execution of db.pl aborted due to compilation errors.
4

2 回答 2

1

Bio::DB::GenBank由于您提到从 CPAN加载外部 Perl 模块,我首先想到的是:该模块是否安装在您的系统上?

尝试cpan Bio::DB::GenBank以 root 身份运行命令(例如,通过在它前面加上sudo)。即使安装了模块,这也不应该受到伤害,在这种情况下,它会检查 CPAN 是否有更新。

于 2013-03-27T19:35:44.250 回答
-2

除了上面的答案,

请使用die功能检查文件是否被打开。

open (INPUT_FILE, 'accnumber.txt');
open (OUTPUT_FILE, 'sequence_dwnl.fa');

像这样:

open (my $input_file, '<', 'accnumber.txt') or die "Could not open because $!\n";
open (my $output_file, '<', 'sequence_dwnl.fa') or die "Could not open because $!\n";

另外,请指定使用这些运算符打开每个文件的目的:

  1. <只读模式打开文件。
  2. >覆盖文件内容。
  3. >>附加文件内容。

另外请检查您是否Bio::DB::GenBank安装了模块。

您可以通过在命令行中运行它来做到这一点:

perldoc -l Bio::DB::GenBank或者perl -MBio::DB::GenBank -e 1

于 2013-03-27T18:53:41.300 回答