On Wed, May 01, 2002 at 01:52:35PM -0500, Frank Newland wrote:
> Ladies and Gentlemen:
> 
> I'm using a while loop to search for specific record. 

A record is a single line in your file?

> If I find the record, then I need to report that record and the trailer
> record.

Sorry, insufficient english on my side.  Is the 'trailer' record the one
you read before the current record?

> I'm not slurping the file into memory so I can't use $openfile[$#openfile]
> approach. 

Not necessary.

Use a 2 element circlular list fifo to store the elements while reading.

    ---------- untested ----------
    my $current = 0;
    my @stash = (undef, undef);
    while (<F>) {
        chomp;                          # not necessary...
        $stash[$current] = $_;          # store for later use
        if (/YOUR PATTERN/) {
            print "Match is '$_'\n";
            print "Prev  is '" . $stash[1 - $current] . "'\n";
        }
        $current = 1 - $current;        # toggle for next run
    }
    ---------- untested ----------

The '$current = 1 - $current' is commonly used in games for selecting
sprite coordinates on double-buffered screens :-)

-- 
                       If we fail, we will lose the war.

Michael Lamertz                        |      +49 221 445420 / +49 171 6900 310
Nordstr. 49                            |                       [EMAIL PROTECTED]
50733 Cologne                          |                 http://www.lamertz.net
Germany                                |               http://www.perl-ronin.de 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to