我正在尝试使用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.
答案 0 :(得分:1)
既然您提到加载了外部Perl模块Bio::DB::GenBank
from CPAN,我首先想到的是:您的系统上是否安装了模块?
尝试以root身份运行命令cpan Bio::DB::GenBank
(例如,在sudo
前加上)。即使安装了模块,这也不应该受到伤害,在这种情况下,它会检查CPAN是否有更新。
答案 1 :(得分:-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";
另外,请指定使用这些运算符打开每个文件的目的:
<
以只读模式打开文件。 >
覆盖文件内容。>>
追加文件内容。另外,请检查您是否安装了Bio::DB::GenBank
模块。
您可以通过在命令行中运行它来执行此操作:
perldoc -l Bio::DB::GenBank
或perl -MBio::DB::GenBank -e 1