There is so much broken in that small code sample that I'd simply throw it away and start again.

For a start, if you need to check of existence of something you ought to be using a hash so put your header lines into a hash.

Next, never reread a file if you don't have to. The intent (although it fails in practice) of your while loop is to reread the input file for each header line you are looking for - way bad way to go! Instead make the while loop the outer loop so you read the large data file once only, then look up the hash in the body of the loop to see if you have a line you want to process.

You don't need to interpolate a variable into a string for it to be printed and if it's the default variable you don't need to specify it at all for print.

Ponder this somewhat cleaned up version:

use strict; use warnings; my $headerFile = <<DATA; >DFHGSUEIEEK >JKDHUEIEEOE >KDJIEEIOIEO DATA my $dataFile = <<DATA; >DFHGSUEIEEK ACGTCGTACGATCGATCAGTACGTACGAT >JKDHUEIEEOE ACGATGCGTACAGTACAGTACAGTACAGT >KDJIEEIOIEO AGTCGTCGTAGTGTTTTACCCCCATGTCA >HSKWJSSWWOW AGTAGTAGTAGTAGGGGTTTTTTTTACCC >ADJHFHIOHFO ACGTGGGGGGGGGGTTATTACCCCCCCCA >DTEEIJEJEOJE TTTTTTTTTTGGGGGGGGGACCCCCCCAT DATA open my $FD, '<', \$headerFile; my %headers = map {$_ => 0} <$FD>; close $FD; open my $FH, '<', \$dataFile; exists $headers{$_} and print while <$FH>; close $FH;

Prints:

>DFHGSUEIEEK >JKDHUEIEEOE >KDJIEEIOIEO

Perl reduces RSI - it saves typing

In reply to Re: While loop printing only one fasta header file by GrandFather
in thread While loop printing only one fasta header file by ashnator

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.