Perl打开多个文件并并排写入单个文件

时间:2013-02-19 22:17:54

标签: windows perl concatenation

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

输入:

file1.txt

AAA
BBB
CCC

file2.txt

DDD
EEE
FFF

输出:

AAA  DDD
BBB  EEE
CCC  FFF

提前致谢

3 个答案:

答案 0 :(得分:1)

如果您没有设置自己编写的perl脚本,那么linux工具paste也会提供此功能。

答案 1 :(得分:0)

怎么样:

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

答案 2 :(得分: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;