$n = 0; while (<>) { $n = 7 if /$pattern/; # start printing if ($n) { print; $n-- } # print if within $n = 0 if eof; # don't leak across file boundaries }