use strict; use warnings; my $csize = 2; ### Number of lines to save my (@cache, $str, $c); my $file = 'data.txt'; open (IN, $file) or die "Can't open $file for read."; while () { shift @cache if $#cache == $csize - 1; push @cache, $_; $c++; $str = join '', @cache; if ($str =~ /jumped\nover/) { print "String found in $file at lines " . ($c - $#cache) . "-$c:\n"; print $str; last; } } #### the quick brown fox jumped over the unfortunate dog #### String found in data.txt at lines 5-6: jumped over