对于下面的 Perl 代码,我需要提高其效率,因为处理输入文件(包含数百万行数据)需要花费数小时。关于如何加快速度的任何想法?
给定两个文件,我想比较数据并打印匹配的行和不匹配的行。请注意,两列需要互换比较。
例如,
input1.txt
A B
C D
input2.txt
B A
C D
E F
G H
请注意:第 1 行和第 2 行匹配(可互换);第 3 行和第 4 行不匹配
Output:
B A match
C D match
E F don't match
G H don't match
Perl代码:
#!/usr/bin/perl -w
use strict;
use warnings;
open INFH1, "<input1.txt" || die "Error\n";
open INFH2, "<input2.txt" || die "Error\n";
chomp (my @array=<INFH2>);
while (<INFH1>)
{
my @values = split;
next if grep /\D/, @values or @values != 2;
my $re = qr/\A$values[0]\s+$values[1]\z|\A$values[1]\s+$values[0]\z/;
foreach my $temp (@array)
{
chomp $_;
print "$_\n" if grep $_ =~ $re, $temp;
}
}
close INFH1;
close INFH2;
1;
非常感谢有关如何提高此代码效率的任何想法。谢谢!