-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 に答える