use strict; use warnings; my $source ="temp.txt"; my $num = 1; my $line = 10; $line||=1; open(FH,"<$source") or die "Can't open '$source' $!"; while ( my $lines = ) { my $outfile=sprintf("Int_%s.txt",$num); ## Open the file once every iteration open OUT, ">$outfile"; my $header = sprintf("%-1s%-12s%-8s%-4s%-4s%-10s%-33s","H",$outfile,"20101221","1230","$num","$line"," "); print OUT $header ."\n"; ## Prints the header here ### Print the contents of the file here, the header is printed above and trailer is printed below. #### print OUT $lines ; my $trailer = sprintf("%-1s%-12s%-8s%-4s%-4s%-10s%-33s","T",$outfile,"20101221","1230","$num","$line"," "); print OUT $trailer ."\n"; ## Prints the trailer here $num++ if ($. % $line eq '0'); close (OUT); ## Close the file in the same iteration, so that a new file is opened next iteration }