You could also read the the file in backward using File::ReadBackwards, then when you find the line you need, just read two more.

I'm inclined to think that is the best solution to your problem assuming the file is of any size at all. Reading the file into an array is slow and memory inefficient and to read forward line by line, you'll have to remember the prior lines somehow, and that's going to involve a lot of data movement (if you use say 4 variables to store the prior lines--you'll be shuffling their values a lot) or a lot of memory (if you're putting the prior lines into an array), slowing your program down.

Edited to add example:
use File::ReadBackwards; $bw = File::ReadBackwards->new( 'log_file' ) or die "can't read 'log_file' $!" ; until ( $bw->eof ) { last if ($bw->readline =~ m/$search_string/); } $prior_line_1 = $bw->readline; $prior_line_2 = $bw->readline;

In reply to Re: newbie question by jpfarmer
in thread Reading a value two lines before the current line by stu96art

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.