#! /usr/bin/perl use strict ; use warnings ; $|++ ; use Tie::File ; tie my @file, 'Tie::File', 'test_h.dat' or die "Can't tie file: $!" ; my $backtrack_lines = 1 ; my $match = '' ; for my $i ( 0 .. $#file ) { if ( $file[$i] =~ /baz/ ) { $match = join "\n", @file[ ( $i - $backtrack_lines ) .. $i ] ; } } print $match ; __END__