my $trig = 'Significant Accounting Policies'; my @res; my $pointer; while (){ $res[$.-1] = $_; # or just: push @res,$_; $pointer = $.-1 if /$trig/i; } print @res[ $pointer .. $#res ];