2013-02-19 249 views
0

我在Windows中运行Perl脚本,它创建了包含一些信息的多个文本文件。我想要一个Perl脚本的帮助,将所有的文本文件数据放在一个文件中。我知道我可以使用嵌套的foreach循环来解析每个文件并将它们并排打印。但文件数量不同。 例如:Perl打开多个文件并并排写入单个文件

输入:

file1.txt

AAA 
BBB 
CCC 

file2.txt

DDD 
EEE 
FFF 

输出:

AAA DDD 
BBB EEE 
CCC FFF 

在此先感谢

回答

0

什么:

open my $fh, ">", "concat.txt" or die $!; 
my $string = qx(
    @echo off; 
    type %*.txt; 
); 
print $fh $string; 

0

这应该这样做。

use strict; 
use warnings; 
use IO::File; 

my @files = (q[a.txt], q[b.txt]); 

my @fhs =(); 

foreach my $file (@files) 
{ 
    my $fh = new IO::File $file, O_RDONLY; 
    push @fhs, $fh if defined $fh; 
} 

while(1) 
{ 
    my @lines = map { $_->getline } @fhs; 

    last if grep { not defined $_ } @lines[0..(@fhs-1)]; 

    print join(qq[\t], map { s/[\r?\n]+/ /g; $_ } @lines) . qq[\r\n]; 
} 

map { $_->close } @fhs; 
1

的Linux的工具paste也提供了这个功能,如果你不上滚动你自己的Perl脚本设置。