Hi Monks,I'm a new user for linux and perl....I have a problem with a perl scrip to parse blast results.This is the script:

############################################## ############ BLAST PARSING ################### ############################################## use strict; use warnings; use Bio::SearchIO; #Ferma il processo se gli argomenti allo script sono diversi da 3 die "Usage: $0 <BLAST report file> <number-of-top-hits> <output-file> +\n", if (@ARGV!=3 ); my ($infile,$numHits,$outfile) = @ARGV; print "Parsing BLAST results \n"; my $in = Bio::SearchIO -> new ( -format=>'blast', -file=>$infile ); open (OUT, ">$outfile" ) or die "Cannot open $outfile :$!" #print the header info for tab-delimitated columns print OUT "query_name\tquery_length\taccession_number\tlength\tdescrip +tion\tE value\tbit score\tframe\tquery_start\t"; print OUT "query_end\thit_start\thit_end\tidentical\tHSP_length\tHSP_E + value\n"; ### Estrazione dei risultati in maniera ricorsiva: while( my $result = $in -> next_result ) { #nome della sequence QUERY: print OUT $result-> query_name . "\t"; #lunghezza della QUERY: print OUT $result-> query_length; #"No Hits found" case: if ($result->num_hits == 0) { print OUT "\n No hits found \n"; } else { my $count = 0; #Processing heach HIT recursively... while(my $hit = $result -> next_hit) { print OUTFILE "\t" if ($count > 0); #get the accession number of the hits: print OUTFILE "\t" . $hit->accession . "\t"; #get the sequence length of the hit: print OUT $hit -> length . "\t"; #Get the description of the HIT sequence: print OUT $hit -> description . "\t"; #GEt the Evalue of the HIT: print OUT $hit -> significance . "\t"; #Get the score of the HIT: print OUT $hit -> bits . "\t"; my $hspcount = 0; #Process the top HSP from the top list: while( my $hsp = $hit -> next_hsp) { #Metto i separatori perche per raccogliere i dati di ogni singolo HSP +(livello più basso) devo dirgli di iniziare scrivere direttamente nel +la colonna numero 8 lasciando libere le precedenti) print OUT "\t\t\t\t\t\t\t", if ($hspcount > 0); #Get the frame of the query sequence: print OUT $hsp->query->frame . "\t"; #Get the start and the end of the QUERY in the ali +gnment: print OUT $hsp-> start('query') . "\t" . $hsp->end +('query'). "\t"; #Get the start and the end of the HIT in the align +ment: print OUT $hsp-> start('hit') . "\t" . $hsp->end(' +hit'). "\t"; #Get the similarity value: NOTA BENE: UTILE SOLAM +ENTE PER BLAST SU SEQUENZE AMINOACIDICHE!!!! #printf OUT "%.1f" , ($hsp->frac_conserved * 100); #print OUT "%\t"; #Get the similarity value: printf OUT "%.1f" , ($hsp->frac_identical * 100); print OUT "%\t"; #Get the lenght of the HSP and the E-value: print OUT $hsp-> length('total') . "\t"; print OUT $hsp-> expect . "\t"; print OUT "\n"; # questo ci dice che deve andare + a capo! $hspcount++; } $count++; #flow control for the number of hits needed: @In +pratica significa che il secondo argomento dato allo script ($numHits +) è il numero di Hit richieste, # una volta raggiunto il numero richiesto di Hits +per una certa query, lo script passa al 'Result' successivo. last if ($count == $numHits); } } } close OUT; print "DONE!!!\n"; #NOTE; # Un singolo risultato di BLAST è composto da più HIT # Può accadere che una certa HIT contenga piu di un allineamento: cioè + più HSPs ## RESULT-->HIT--->HSPS ### Ogni pacchetto di BIOPERL (Bio::SearchIO) come in questo caso, è c +aratterizzato da una serie di funzioni proprie che lavorano sugli ogg +etti creati nel pacchetto stesso #Ogni oggetto (HSP, Result, HIT) ha le sue proprie funzioni! (vedi www +.bioper.org/wiki/HOWTO::SearchIO/) ##USAGE: # >Perl.exe blast.parsing.pl blast.output.txt 10 blast.output.top10.tx +t

I launched it with /usr/bin$ perl blast.parsing.pl blastoutput 20 output This is the error message: syntax error at blast.parsing.pl line 27, near "print" Execution of blast.parsing.pl aborted due to compilation errors. What happened? Please help me. Thanks in advance


In reply to syntax error near print by mariannapac

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.