• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlによるデータのくっつけ方法の効率化)

perlによるデータのくっつけ方法の効率化

このQ&Aのポイント
  • perlを使って大量のデータを効率的に結合する方法について教えてください。
  • ファイル1とファイル2のデータを条件に基づいて結合し、結果を出力する方法を教えてください。
  • データの結合にはカラム2とカラム5の値の一致を利用し、ファイル1の内容にファイル2のカラム6とカラム7を追加して増やしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.2

次のプログラムは、ファイルからの読み込みに変更する必要があります。 use strict; my %file2 = (BB => [['EEE', 'RRR'], ['EEE', 'SS'], ['FF', 'TTTT']], W => [['EEE', 'TTTT']]); while (<DATA>) { my @line = split /\s+/; if (exists $file2{$line[1]}) { print join("\t", @line, @$_), "\n" foreach @{$file2{$line[1]}}; } } __DATA__ AAA BB CC DDDD AAA BBB CC DD XX BB YYY Z ちなみに、ファイルからの読み込みで %file2 を構築するには次のようにします。 while (<FILE2>) { my ($c1, $c2, $c3) = split /\s+/; push @{$file2{$c1}}, [$c2, $c3]; }

1204533
質問者

お礼

ハッシュの作り方 このようにすればよいのですか。。。 思いつきませんでした。 試してみます!

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

方向性としては「データベースを使う」のが最善な気もするけど.... ファイル2 の大きさ (総バイト数) にもよるんだけど, それがメモリに載るくらいなら ファイル2 を読み込んでハッシュに入れ, ファイル1 の行ごとに調べる という方針でいくかなぁ.

1204533
質問者

お礼

さっそくの助言ありがとうございます。 DB利用せずに処理を考えております。 ハッシュにすることで速くなるのではないかと思っているのですが、ファイル2をどのようにハッシュ化すべきか わからずにおります。やり方がわかりましたら、教えてください。、