> > Something like (untested):
> >
> > my (@lines, $num) = ((), 4);
> > while (<INPUT>) {
> >   push @lines, $_;
> >   shift @lines if @lines == $num+1;
> >   print 'lines '.($.-$num+1).' to '.($.)." match\n"
> >     if join('',@lines) =~ /regex goes here/;
> > }
> >
> 
> That assumes that the pattern being searched for will begin 4n lines
> from the beginning of the file, but just because we're looking for
> four lines doesn't mean the file is written in four line chunks.  In
> fact, it probably isn't.

Er, no it doesn't. Read it again. It's a rolling n-line chunk of the file.

> Why don't you tell us what you're actually trying to do here; I'm
> guessing the goal isn't to search through a file for a literal string
> and then print it.  If you knew what you were looking for, you
> wouldn't need to seach the file; you could just print it.  So is the
> ultimate goal to perform a substitution? Count the number of
> occurrances?  What?

Now this I agree with.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to