perl从两个文件中读取相同的行

时间:2013-08-08 15:12:12

标签: perl loops file-io

我有两个行数相同的文件,每行包含数值列。

文件A

的示例
1 2 3 4
2 3 4 5

文件B

的示例
7 8 9 0
6 7 8 9

我想对这两个文件中相应行的值求和,并将结果写入输出文件。

预期产出:

8 10 12 4
8 10 12 14

2 个答案:

答案 0 :(得分:5)

您可以轻松地执行类似..

的操作
while ( not eof $fh1 and not eof $fh2 ) {
   my @vals1 = split /\s+/, <$fh1>;
   my @vals2 = split /\s+/, <$fh2>;

   my @sums = join ' ', map {$vals1[$_] + $vals2[$_]} 0 .. $#vals1;

   print $out $_ for @sums, "\n";
}

输出:

8 10 12 4
8 10 12 14

答案 1 :(得分:2)

考虑2个文件具有相同数量的行和字段

use strict;
use warnings;
use Data::Dumper;

#first data file
open my $fh1, '<', '1.txt' or die $!;

#seecond data file
open my $fh2, '<', '2.txt' or die $!;

#output file
open my $out, '>', 'out.txt' or die $!;

while (!eof($fh1) and !eof($fh2)) {
    my $line1 = <$fh1>;
    my $line2 = <$fh2>;

    my @l1 = split /\s+/, $line1;
    my @l2 = split /\s+/, $line2;

    my @newvalues;

    my $i = 0;
    for (@l1){
        push @newvalues, $_ + $l2[$i];
        $i++;
    }

    print Dumper \@newvalues;

    my $new = join ' ', @newvalues;
    print $out $new."\n";
}

##编辑##

请参阅下面的@hwnd版本,了解如何解决此问题的更清晰,更紧凑的代码