Ваше объяснение может больше соответствовать вашему примеру. Но исходя из идеи, что вы хотите, чтобы все 9000 строк помещались в один файл.
Я не знал, где вы собираетесь указывать свои имена, поэтому я использовал командную строку.
use English qw<$OS_ERROR>;
open( my $out_h, '>', $outfile_name )
or die "Could not open '$outfile_name'! - $OS_ERROR"
;
my @input_h;
foreach my $name ( @ARGV ) {
open( $input_h[ $_ ], '<', $name )
or die "Could not open '$name'! - $OS_ERROR"
;
}
foreach my $in_h ( @input_h ) {
my $lines_written = 0;
while ( $lines_written++ < 500 ) {
print $out_h scalar <$in_h>;
}
}
foreach my $in_h ( @input_h ) {
print $out_h <$in_h>;
}
close $out_h;
close $_ foreach @input_h;