in reply to print line 5 lines previous to comaprison line!
You don't say what to do if the match is found in the first five lines of the file. I'm going to assume that this can't happen. I'm also going to assume that you don't want to read the whole file into memory at once.
I'd build a buffer that always contains the previous five lines and work with that. Something like this:
--#!/usr/bin/perl -w use strict; my @buffer; push @buffer, scalar <DATA> for 1 .. 5; my $pat = 8; # adjust to value to search for while (<DATA>) { print $buffer[0] if /$pat/; push @buffer, $_; shift @buffer; } __END__ 1 2 3 4 5 6 7 8 9 10
Perl Training in the UK <http://www.iterative-software.com>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: print line 5 lines previous to comaprison line!
by Adam (Vicar) on Jun 08, 2001 at 01:47 UTC |