#!/usr/bin/perl use strict; use warnings; use POSIX 'ceil'; die "Usage: splitfile num_of_files initial_file\n" unless @ARGV >= 2; my ($count, $infile) = @ARGV; open INFILE, '<', $infile or die $!; my @lines = ; my $lines_per_file = ceil(@lines / $count); my $i = 1; open OUTFILE, '>', "$infile.$i" or die $!; my $lines_left = $lines_per_file; foreach (@lines) { unless ($lines_left) { close OUTFILE; $i++; open OUTFILE, '>', "$infile.$i" or die $!; $lines_left = $lines_per_file; } print OUTFILE; $lines_left--; }