my $filename = 'foo'; my $bufferSize = 1,000,000; my $outFileSize = 512; open (IN, $filename); binmode IN; seek (IN, 0, 0); my $buffer; my $i = 1; my $j = 1; open (OUT, "$filename$i"); while (read (IN, $buffer, $bufferSize)){ if ($j > $outFileSize){ $j = 1; $i++; close OUT; open (OUT, "$filename$i"); } print OUT $buffer; $j++; } close OUT;