と思ったら 1000 行以下がでないじゃん。

my $data = join '', <> ;
$data =~ s/.*?(([^¥n]*?¥n){50})¥Z/$1/s ;
print $data ;