連想配列で時間短縮したい
aaa.txt
06011800, 5.3
06012100, 5
06020000, 4.5
06020300, 6.2
…
bbb.txt
06011800, 5.1
06012100, 7.5
06020000, 5.1
06020300, 9.3
…
という二つのファイルがあります。
以下のプログラムを用いて、
06011800, 5.3, 5.1
06012100, 5, 7.5
06020000, 4.5, 5.1
06020300, 6.2, 9.3
…
といった感じでデータを作る事に成功したのですが、どうしてもループに無駄が多く、時間がかかってしまいます。
連想配列などを使えば時間が短縮出来そうなのですが、よくわかりません。
ご教示いただけないでしょうか。
以下、作成したプログラム。
$csvfile1 = $ARGV[0];
$csvfile2 = $ARGV[1];
open(DAT1, $csvfile1) || die $!;
while($line=<DAT1>) {
chomp($line);
@dat = split(/,/,$line);
open(DAT2, $csvfile2) || die $!;
while($line2=<DAT2>) {
chomp($line2);
@dat2 = split(/,/,$line2);
if($dat[0] == $dat2[0]){
print "$dat[0],$dat[1],$dat2[1]\n";
}
}
}
close(DAT);
お礼
そうなんですか。 分かりました。 ありがとうございます。やってみます。