$/ = \100000; my $prev = ''; while (<$FH>) { my $line = $prev . $_; if ($line =~ /a funky regex/) { do some work here; } # Adjust 100 upwards if regex can match something longer than 100 chars $prev = substr($line,-100); }