我对 Perl 相当陌生,所以希望这有一个快速的解决方案。
我一直在尝试根据一个键组合两个文件。问题是有多个值而不是它返回的一个。有没有办法循环遍历哈希以获得它可能获得的 1-10 个值?
例子:
文件输入 1:
12345|AA|BB|CC
23456|DD|EE|FF
文件输入2:
12345|A|B|C
12345|D|E|F
12345|G|H|I
23456|J|K|L
23456|M|N|O
32342|P|Q|R
我将最后一个放入的原因是因为第二个文件有很多我不想要的值,但文件 1 我想要所有值。我想要的结果是这样的:
想要的输出:
12345|AA|BB|CC|A|B|C
12345|AA|BB|CC|D|E|F
12345|AA|BB|CC|G|H|I
23456|DD|EE|FF|J|K|L
23456|DD|EE|FF|M|N|O
附件是我目前使用的代码。它给出如下输出:
我得到的输出:
12345|AA|BB|CC|A|B|C
23456|DD|EE|FF|J|K|L
到目前为止我的代码:
#use strict;
#use warnings;
open file1, "<FILE1.txt";
open file2, "<FILE2.txt";
while(<file2>){
my($line) = $_;
chomp $line;
my($key, $value1, $value2, $value3) = $line =~ /(.+)\|(.+)\|(.+)\|(.+)/;
$value4 = "$value1|$value2|$value3";
$file2Hash{$key} = $value4;
}
while(<file1>){
my ($line) = $_;
chomp $line;
my($key, $value1, $value2, $value3) = $line =~/(.+)\|(.+)\|(.+)\|(.+)/;
if (exists $file2Hash{$key}) {
print $line."|".$file2Hash{$key}."\n";
}
else {
print $line."\n";
}
}
感谢您提供的任何帮助,