Here are two versions: the first one intermixes all the lines from
the files, the second allows you to decide on a limit of how many
lines to read from the files (as per your followup specifications):
#!/usr/bin/perl -w
use strict;
use IO::File;
my @files = qw/file1 file2 file3/;
my @fhs = map{IO::File->new($_)||die "$_: $!"} @files;
print while $_ = join '', map{scalar <$_>||''} @fhs;
__END__
#!/usr/bin/perl -w
use strict;
use IO::File;
my $limit = 2000;
my @files = qw/file1 file2 file3/;
my @fhs = map{IO::File->new($_)||die "$_: $!"} @files;
for(1 .. $limit) {
$_ = join '', map{scalar <$_>||''} @fhs or last;
print;
}
__END__
Both assume that you'll just redirect output to the new file, but
you can open() an output filehandle and print to it if you wish.