2015-06-08 6 views
0

У меня есть следующий условный код как часть моего скрипта, и я продолжаю получать синтаксическую ошибку только для последнего вызова open. Предложения?Ошибка синтаксиса в Perl open

if ($contig_string =~ /($pattern)/) { 
     print "$ERR_number \n"; 
     print "Found forward pattern.\n"; 
     print "Pattern found is: $1 \n"; 
     $position = index($contig_string,$1); 
     print "Index returned: $position \n"; 
     $substr_forward = substr($contig_string, $position, -2000); 
     print "$substr_forward \n"; 
     open (REPORT, ">>", spacer_contigs) or die "Could not open"; 
     print REPORT ">$ERR_number \n"; 
     print REPORT "$substr_forward \n"; 
     } 
elsif ($contig_string =~ /($pattern_reverse)/) { 
     print "$ERR_number \n"; 
     print "Found reverse pattern.\n"; 
     print "Pattern found is: $1 \n"; 
     $position_reverse = index($contig_string,$1); 
     print "Index returned: $position_reverse \n"; 
     $substr_reverse = substr($contig_string, $position_reverse, 2000); 
     print "$substr_reverse \n"; 
     open (REPORT, ">>", spacer_contigs) or die "Could not open"; 
     print REPORT ">$ERR_number \n" or die "Could not append"; 
     print REPORT "$substr_reverse \n"; 

     } 
elsif ($contig_string !~ /$pattern_forward/) { 
     print "$ERR_number \n"; 
     print "Did not find pattern. \n" 
     open (NOMATCH, ">>", no_match) or die "Could not open"; # SYNTAX ERROR 
     print NOMATCH ">$ERR_number \n" or die "Could not append";  

     } 
+1

Просто быть ясно, являются '' ** для выделения/жирным шрифтом? Укладка меток не доступна в кодовых блоках. Было бы лучше добавить комментарий внутри фрагмента рядом с линией или сократить фрагмент до того, что действительно нужно. Кроме того, если вы можете включить сообщение, данное ошибкой в ​​вашем сообщении, это может быть полезно. –

+2

Вам не хватает точки с запятой на предыдущей строке. – Andrei

+1

У вас также есть сообщения 'die'. '>>' добавляется, а '>' перезаписывается. – TLP

ответ

7

Вы упускаете точку с запятой на print до open, который вызывает проблемы.

Кроме того, редко приходится выводить пробелы перед символами новой строки. У вас есть множество строк, таких как:

print "Did not find pattern. \n" # This is where the semicolon should be 

, что лучше было бы записать так:

print "Did not find pattern.\n"; 
+0

@ UMD2UCSF: Пожалуйста взгляните на [*** Что делать, если кто-то отвечает на мой вопрос? ***] (http://stackoverflow.com/help/someone-answers) – Borodin