open(my $fh, "mahoosive_file") or die("ack - $!"); my @chunks; { local $/ = \24576; push @chunks, $_ while <$fh>; } #### ... { # NOTE: code is untested local $/ = \24576; while(<$fh>) { my $chunk = $_; my $last_rs = rindex($chunk, $/) push @chunks, substr($chunk, 0, $last_rs); seek($fh, 1, -(length($chunk) - $last_rs)); } }