<p dir="ltr">You should do<br>
cat try.fa | perl ..<br>
rather than less,IMO. less formats things.</p>
<p dir="ltr">You can add<br>
&nbsp; no warnings qw/once/;<br>
to get rid of that warning, it shouldn't affect<br>
the program.</p>
<p dir="ltr">MAJ</p>
<br/><div class="cm_quote" style=" color: #787878">On Sat, Jul 12, 2014 at 8:03 PM, Haiyan Lin &lt;<a href="mailto:linhy0120@gmail.com">linhy0120@gmail.com</a>&gt; wrote:</div><br><div id="oldcontent" style="background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial;"><blockquote style=""><p dir="ltr"><br>
Hi, Paul,</p>
<p dir="ltr">Thanks for your quick replay and advice. Soryy for my late feedback, I can't send maill in my location yesterday. I have tried your method. But<br>
it complains that</p>
<p dir="ltr">------------------------------------<br>
[linhy@bioinfo1 Script]$ less try.fa | perl ./fastaLen.pl<br>
Name "main::DATA" used only once: possible typo at ./fastaLen.pl line<br>
42.<br>
Use of uninitialized value in print at ./fastaLen.pl line 49.<br>
------------------------------------<br></p>
<p dir="ltr">I had also tried the "-fh=&gt;\*STDIN", and "-fh=&gt;&lt;&gt;",according to the<br>
documentation returned by "perldoc Bio::SeqIO" at termminal, but I still<br>
haven't got I want.Thanks again.</p>
<p dir="ltr">... ...</p>
<p dir="ltr">&nbsp;&nbsp; Bio::SeqIO-&gt;new()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $seqIO = Bio::SeqIO-&gt;new(-file =&gt; 'filename',<br>
-format=&gt;$format);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $seqIO = Bio::SeqIO-&gt;new(-fh&nbsp;&nbsp; =&gt; \*FILEHANDLE,<br>
-format=&gt;$format);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $seqIO = Bio::SeqIO-&gt;new(-format =&gt; $format);</p>
<p dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... ... </p>
<p dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -fh&nbsp; You may provide new() with a previously-opened filehandle.<br>
For example, to read from STDIN:</p>
<p dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $seqIO = Bio::SeqIO-&gt;new(-fh =&gt; \*STDIN);</p>
<p dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Note that you must pass filehandles as references to globs.</p>
<p dir="ltr">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If neither a filehandle nor a filename is specified, then<br>
the module will read from the @ARGV array or STDIN, using the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; familiar &lt;&gt; semantics.</p>
<p dir="ltr">-------------------------------<br><br></p>
<p dir="ltr">Regards</p>
<p dir="ltr">Haiyan<br><br><br></p>
<p dir="ltr">On Sat, 2014-07-12 at 10:22 -0400, Paul Cantalupo wrote:<br>
&gt; Hi Haiyan,<br>
&gt; <br>
&gt; <br>
&gt; You need to use the '-fh' option in Bio::SeqIO new and have it use<br>
&gt; Perl's DATA filehandle like so:<br>
&gt; my $in = Bio::SeqIO-&gt;new(-fh =&gt; \*DATA, -format =&gt; 'fasta');<br>
&gt; <br>
&gt; This was taken from<br>
&gt; http://perldoc.perl.org/perldata.html#Special-Literals:<br>
&gt; "Text after __DATA__ may be read via the filehandle PACKNAME::DATA ,<br>
&gt; where PACKNAME is the package that was current when the __DATA__ token<br>
&gt; was encountered."<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; Good luck,<br>
&gt; <br>
&gt; Paul<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; Paul Cantalupo<br>
&gt; University of Pittsburgh<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; On Sat, Jul 12, 2014 at 8:35 AM, Haiyan Lin &lt;linhy0120@gmail.com&gt;<br>
&gt; wrote:<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hill, dear perlers,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I‘m trying to use Bio::SeqIO to read Fasta sequence from pipe,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or @ARGV,<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; like "while (&lt;&gt;) {....}". After several trier and error,&nbsp; I'm<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; failed and<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; need to ask for herp from you. Could you please help me to<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check or try<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; following code?<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks in advance.<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------------------------------------<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use Bio::SeqIO ;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use Statistics::Descriptive ;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my %opt = () ;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $sta = Statistics::Descriptive::Full-&gt;new();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ##### here is the key, I think.<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $in = Bio::SeqIO-&gt;new(-format=&gt;"Fasta");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(my $s = $in-&gt;next_seq()){<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $sta-&gt;add_data($s-&gt;length()) ;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print $sta-&gt;sum() if $opt{sum} ;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __DATA__<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;ct1<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGAGAGAGA<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;ctg2<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ATATATAT<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------------------------------------<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Regards<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Haiyan<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _______________________________________________<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bioperl-l mailing list<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bioperl-l@mailman.open-bio.org<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://mailman.open-bio.org/mailman/listinfo/bioperl-l<br>
&gt; <br>
&gt; <br><br></p>
<p dir="ltr">_______________________________________________<br>
Bioperl-l mailing list<br>
Bioperl-l@mailman.open-bio.org<br>
http://mailman.open-bio.org/mailman/listinfo/bioperl-l</p>
</blockquote></div>