2013-02-19 127 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腳本設置。