use strict; use Tie::File; my $filename = "some.log"; my @file; tie @file, 'Tie::File', $filename || die "Unable to open file\n"; my $index = 0; foreach my $line (@file) { if ($line =~ m/xyz/i) { my $var1 = $file[$index-4]; my $var2 = $file[$index+4]; print "Found values '$var1' and '$var2'\n"; } $index++; } untie @file;