#!usr/bin/perl use strict; use warnings; my $nHeaderLines = 2; my $nDataLinesPerFile = 4; my @header; # the "Big File" is the DATA segment below, # maybe millions of lines... for (1..$nHeaderLines) # read header lines from big file { my $header_line = ; push @header, $header_line; } # divide the big file data into smaller files, # each with the initial header... my $nFile = 0; my $fileNameBase = "SmallerFile"; my $nDataLine = 99999; my $line; while ($nDataLine++, defined ($line = )) { if ($nDataLine > $nDataLinesPerFile) # start new file { $nFile++; my $name = "$fileNameBase$nFile.txt"; open (OUT, '>', "./$name") or die "$!"; print OUT @header; $nDataLine=1; } print OUT $line; } print "Program Done!\n"; __DATA__ Header 1 Header 2 data 1 data 2 data 3 data 4 data 5 data 6 data 7 data 8 data 9