use strict; use warnings; my $temp_data=0; my $i=0; my $f=shift || die "File\n"; open(F,$f) || die "OPEN : $!\n"; binmode(F); my $size=shift || die "Size\n"; my $dir=shift || die "Dir that will hold the parts of the file?\n"; my $fsize=-s $f; system("mkdir $dir"); chdir($dir) || die "CHDIR : $!\n"; CHUNK:while(1) { if(($fsize - $size) < 0) { read(F,$temp_data,$fsize); open(G,">$i") || die "CREATE $!\n"; print G $temp_data; print "i've split chunk nr $i\n"; close G; last CHUNK; } else { $fsize-=$size; read(F,$temp_data,$size); open(G,">$i") || die "CREATE $!\n"; print G $temp_data; close G; print "I've split chunk $i\n"; $i++; last CHUNK if($fsize<0); } } close F;