- ベストアンサー
Perlの初心者です。2重ループの方法で困ってます。
ある二つのファイル(moto1.csvとmoto2.csv)の2番目のフィールドが おなじときに二つのファイルの中身をあわせて別のファイル(kekka.csv)を 作る作業をしています。 下記のソースで※2の場所で何回もファイルをオープンさせるととても重いので ※1でファイルを一回だけオープンさせて処理しようと思ったら。 内側のループ(moto2_Log)が一回しか処理されないので困っております。 何かよいアイデアがありましたらよろしくお願いします。 open(moto1_Log,"< moto1.csv"); open(kekka_Log,"> kekka.csv"); ※1open(moto2_Log,"< moto2.csv"); while( <moto1_Log> ) { chop; @moto1_List=split(/,/); ※2 #open(moto2_Log,"< moto2.csv"); while( <moto2_Log> ) { chop; @moto2_List=split(/,/); if($moto1_[1] eq $moto2_List[1]){ print kekka_Log $S_List[0]; print kekka_Log ","; print kekka_Log $S_List[1]; print Export_Log ","; print Export_Log $S_List[2]; print Export_Log ","; print Export_Log $S_List[3]; print Export_Log ":"; print Export_Log $E_List[0]; print Export_Log ","; print Export_Log $E_List[1]; print Export_Log ","; print Export_Log $E_List[2]; print Export_Log ","; print Export_Log $E_List[3]; print Export_Log "\n"; #改行コード continu; } } } close (moto2_Log); close(kekka_Log); close(moto1_Log);
- みんなの回答 (3)
- 専門家の回答
お礼
ありがとうございます。 確かに時間はさほど変わりませんでした。 どうやって時間を短縮さえ酔うと悩んでいたところです。 とても参考になります。