簡體   English   中英

Perl打開多個文件並排寫入一個文件

[英]Perl Open multiple files and write to a single file side by side

我正在Windows中運行Perl腳本,該腳本會創建帶有一些信息的多個文本文件。 我希望獲得有關Perl腳本的幫助,以將所有文本文件數據並排放置到一個文件中。 我知道我可以使用嵌套的foreach循環解析每個文件並並排打印它們。 但是文件數量有所不同。 例如:

輸入:

file1.txt

AAA
BBB
CCC

file2.txt

DDD
EEE
FFF

輸出:

AAA  DDD
BBB  EEE
CCC  FFF

提前致謝

如果您未設置自己的perl腳本,則linux工具paste也提供了此功能。

關於什么 :

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM