in reply to combine multiple files into one (line by line)
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.
|
|---|