2013-03-27 2 views
-1

Я пытаюсь загрузить файл последовательности из базы данных банка генов, используя perl, но он показывает ошибку. У меня нет руководства по исправлению моей программы.Загрузка файла последовательности с 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

'open (OUTPUT_FILE, 'sequence_dwnl.fa');' должно быть 'open (OUTPUT_FILE, '>', 'sequence_dwnl.fa');', но это не похоже на проблему, которую вы определяете , – kjprice

+3

Кроме того, какая ошибка вы получаете? – kjprice

+2

Ваша первая строка должна быть: '#!/Usr/bin/perl -w' – imran

ответ

-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

+0

Кришначандра, вы были здесь достаточно долго, и я проголосовал за вас достаточно времени. Пожалуйста, начните использовать современный стиль Perl. Мы связываем, чтобы удалить примеры дескрипторов и открыть два аргумента, а не добавлять их! 'open (my $ input_handle, '<', 'accnumber.txt') или die" Не удалось открыть, потому что $! \ n ";' –

+0

@JoelBerger: Спасибо за напоминание, внесли изменения. –

1

Поскольку линия вы упоминаете нагрузки внешний модуль Perl Bio::DB::GenBank from CPAN, первое, что пришло на ум: Является ли модуль, установленный на вашем система?

Попробуйте выполнить команду cpan Bio::DB::GenBank как root (например, добавив ее sudo). Это не должно повредить, даже если модуль установлен, и в этом случае он проверяет CPAN на наличие обновлений.

+0

Я получаю эту ошибку, в то время как я меняю свой сценарий «Bareword» Bio :: DB :: GenBank «не разрешен, пока« строгие субтитры »используются в строке db.pl 6. Bareword« new »не разрешен, пока« строгие подсистемы » "используется в строке db.pl 27. Bareword" seq "не разрешено, пока используются строгие субтитры в строке db.pl 29. Выполнение db.pl отменено из-за ошибок компиляции." –

+0

@ManojkumarK Алоис исправил ваш код в исходном посте. Используйте это и повторите попытку. На стороне примечание, я не думаю, что правильно исправить код в исходном сообщении, вот что должны делать ответы. – imran

+0

@imran Я думал об этом, но до тех пор, пока вы исправляете только код, который, очевидно, не является частью вопроса, я предполагаю, что все должно быть в порядке. OTOH Мне не очень полезно, если все начинают «отвечать» на проблемы, вызванные только плохими разметками ... –

 Смежные вопросы

  • Нет связанных вопросов^_^