データ分割 正規表現だけで可能?
都合のいい質問だと分かってて質問しています。
今、データの読み込みプログラムを作っています。
件数は12万件(11MB)です。
・データはCSV形式になっており、区切りはカンマです。
・"" で囲まれたカラムとそうでないカラムがあり、"" で囲まれたカラムの一部には、データとしてカンマが含まれていることがあります。
・また、データにはエスケープシーケンスを含むことが許されており、 \" という文字は囲み記号であると認識してはいけません。
このようなルールのとき、
@data = split( /,/, $line );
というロジックでは分割できませんよね。
なんで、物凄い複雑なロジックで分割を行う xsplit という独自の関数を作って分割しています。
ところが、1行ごとにこの xsplit を使用しなければならないため、データが12万件もあると、読み込みだけで15~18秒もかかってしまいます。( split だと3秒で終わります)
で、少しでもこの時間を縮めるために、上記のルールを崩さずに split の /,/ の部分を変更するだけで分割を行うことはできないもんでしょうか。
何か思いついた方がいらっしゃいましたら、よろしくお願いします。
(ちなみに拡張モジュール類などの、環境によって動いたり動かなかったりするような物は使えないということでお願いします)
お礼
大変お礼が遅くなりましたが、ありがとうございました。 ですが、正直GUIフロント・エンドと書いてある点は読んでいただけなかったようですが、闇雲に回答を書くのはいかがなものでしょうか? また、rarの分割暗号圧縮のコマンド・オプションなど、有るか・無いかなどをおしえていただければ、嬉しかったのですが・・・・