Hello tejas1991, and welcome to the Monastery!

In addition to the problems already identified by other monks, your script has some logic errors. First, this code (in outline):

while (my $line = <F>) { if ($line =~ /$_/) { ... last; # breaking while loop } else { ... last; # breaking while loop } }

makes no sense: whatever the outcome of the regex match, the loop is guaranteed to terminate after the first line. Second, and more importantly, this:

open (F, "$dir/$filename") || die ("Could not open $filename"); foreach (@store) { ... while ($line = <F>) { ... } }

cannot work, because once the inner while loop finishes on the first iteration of the outer foreach loop, the filehandle F no longer points to the first line of the file, so subsequent iterations of the foreach loop will never see the file’s first line(s). You could look at correcting this by resetting the filehandle using seek; but the code would still be inefficient. A better approach is to reverse the order of the loops:

open(my $F, '<', "$dir/$filename) or die "Cannot open file '$dir/$file +name' for reading: $!"; OUTER: while (my $line = <$F>) { foreach my $string (@store) { if ($line =~ /\Q$string\E/) { ... next OUTER; } } } close $F or die "Cannot close file '$dir/$filename': $!";

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,


In reply to Re: Search strings stored in array into files of a directory by Athanasius
in thread Search strings stored in array into files of a directory by tejas1991

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.