私はPerlにかなり慣れていないので、うまくいけば、これで簡単に解決できます。
キーに基づいて2つのファイルを結合しようとしています。問題は、返される値ではなく複数の値があることです。ハッシュをループして、取得できる値をさらに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
最後のファイルを入れた理由は、2番目のファイルには不要な値がたくさんあるのに、ファイル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";
}
}
あなたが提供するかもしれないどんな助けにも感謝します、