我在Windows中運行Perl腳本,它創建了包含一些信息的多個文本文件。我想要一個Perl腳本的幫助,將所有的文本文件數據放在一個文件中。我知道我可以使用嵌套的foreach
循環來解析每個文件並將它們並排打印。但文件數量不同。 例如:Perl打開多個文件並並排寫入單個文件
輸入:
file1.txt
:
AAA
BBB
CCC
file2.txt
:
DDD
EEE
FFF
輸出:
AAA DDD
BBB EEE
CCC FFF
在此先感謝
我在Windows中運行Perl腳本,它創建了包含一些信息的多個文本文件。我想要一個Perl腳本的幫助,將所有的文本文件數據放在一個文件中。我知道我可以使用嵌套的foreach
循環來解析每個文件並將它們並排打印。但文件數量不同。 例如:Perl打開多個文件並並排寫入單個文件
輸入:
file1.txt
:
AAA
BBB
CCC
file2.txt
:
DDD
EEE
FFF
輸出:
AAA DDD
BBB EEE
CCC FFF
在此先感謝
什麼:
open my $fh, ">", "concat.txt" or die $!;
my $string = qx(
@echo off;
type %*.txt;
);
print $fh $string;
?
這應該這樣做。
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;
的Linux的工具paste
也提供了這個功能,如果你不上滾動你自己的Perl腳本設置。