これは単純な問題ですが、実用的な解決策を見つけることができません。2つのファイルがあり、最初のファイルには、「トマト」、「キュウリ」など、興味のあるすべてのIDが含まれていますが、2番目のファイルには値がない興味のないIDも含まれています。2番目のファイルのデータ構造は次のとおりです
tomato red
tomato round
tomato sweet
cucumber green
cucumber bitter
cucumber watery
取得する必要があるのは、2番目のファイルのすべての一致する値を持つすべてのIDを含むファイルで、次のようにすべてがタブで区切られています。
tomato red round sweet
cucumber green bitter watery
これまでに行ったことは、最初のファイルのIDからハッシュを作成することです。
while (<FILE>) {
chomp;
@records = split "\t", $_;
{%hash = map { $records[0] => 1 } @records};
}
そしてこれは2番目のファイルです:
while (<FILE2>) {
chomp;
@records2 = split "\t", $_;
$key, $value = $records2[0], $records2[1];
$data{$key} = join("\t", $value);
}
close FILE;
foreach my $key ( keys %data )
{
print OUT "$key\t$data{$key}\n"
if exists $hash{$key}
}
同じIDに一致するすべての値を組み合わせるためのいくつかの簡単な解決策に感謝します!:)