• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSV読み込み時に条件に合う行(複数)の抜き出し)

CSV読み込み時の特定条件に合う行を抜き出す方法

このQ&Aのポイント
  • CSV読み込み時に特定の条件に合う行を抜き出す方法について教えてください。
  • 現在、ショッピングカートを改造しています。デフォルトでは全ての商品データを読み込みソートして表示するようになっていますが、特定の条件に合う行だけを読み込みたいです。
  • 一度全てのデータを読み込んで条件ごとに行ごとに調べる方法以外に、効率的な処理方法はありますか?

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

  • ベストアンサー
  • in_dow
  • ベストアンサー率77% (7/9)
回答No.1

readline(*filehandle)もしくは<filehandle>を再復帰構文(foreachやwhile)で読み出し、その中で、if構文でマッチさせた物のみをpush(@line,$_);などのようにしてインポートさせてやればいいのではないかと思います 詳細なデータ構体が分らないのですが、例を挙げますと、 #exp(year,month,day,hour,min,sec), $nowTime = int(&numTime(0)); $chrSplitter = '<>'; open(ITEM,$fileName) || die 'cannot load file'; foreach(readline(*ITEM)){ #期限が現在時刻よりも前だったら、配列に挿入(ぁ、逆かも) if(int((split(/$chrSplitter/o))[0])<=$nowTime){ push(@line,$_); } } close(ITEM); sub numTime(){ my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+$_[0]); return sprintf("%04d%02d%02d%d%02d%02d%02d",($year + $factorYear),$mon,$mday,$wday,$hour,$min,$sec); } #わかりにくかったらゴメンナサイ

jiro2100
質問者

お礼

回答ありがとうございます なるほど、こういう手も有るのですね。 とりあえ一度全て@lineとして読み込んでからforeachで 条件に合うモノだけ@line2としてインポートしていたのですが、 2度手間なので、この方法を使わせていただきます。 ありがとうございました。

関連するQ&A