in reply to Peeling Data with Reserved Characters and Long Lines

Something like (untested):
use 5.010; use autodie; my $CHUNK_SIZE = 1024 * 1024; # Read 1Mb chunks. open my $fh, "<", $filename; open my $out, ">", $outfilename; my $buffer; while (read $fh, my $chunk, $CHUNK_SIZE) { $buffer .= $chunk; while ($buffer =~ m{-/([a-zA-Z0-9]{5,20})\?srt=/}g) { say $out $1; substr($buffer, 0, pos($buffer)) = ""; } substr($buffer, 0, -26) = ""; # Keep last characters } __END__