use strict; use warnings; @ARGV == 2 or die("Usage: $0 FILE PARTS\n"); my($file,$partsize) = @ARGV; my $filesize = -s $file or die("ack: $!"); my $div = $filesize / $partsize; my $cnt = 0; open(my $fh, $file) or die("ack: $!"); { local $/ = \$div; while($filesize > 0) { open(my $chunk, ">${file}.chunk$cnt") or die("ack: $!"); print $chunk scalar <$fh>; $filesize -= $div; $cnt++; } }