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.
In reply to Re: combine multiple files into one (line by line)
by danger
in thread combine multiple files into one (line by line)
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |