PerlでCSVを扱うためのモジュール探し

PerlCSVファイルを扱うときに,毎回

open IN, "<", $filename;
while(<IN>){
    my @col = split(/,/, $_);
    ...
}

をするのが面倒なのでcpanを漁ってみる。


いつもお世話になっているGoogle先生,および最速インターフェース研究会様でモジュール検索。


調べた結果,Text::CSV_XSを使うみたい。
とりあえずインストールしてみる。
cpanシェルを起動し,以下のコマンドを実行。

install Text::CSV_XS

問題なくインストール完了。はてしなく便利>cpan


で,使い方を読んでると・・・あれ?なんか違くね?

どうやらText::CSV_XSは上記CSV処理コードのsplitを担当するものらしい。
splitでは二重引用符とかの処理がうまくできないからText::CSV_XSを使うみたい。

splitで問題ないCSVファイルを使っている私には必要ないモジュールであることを認識。
私が欲しいのはCSVファイルを指定して全体をメモリ上に読み込んでくれるモジュールです。


てことで再検索。
すぐ近くにText::CSV::Simpleというモジュールを発見。
同様に

install Text::CSV
install Text::CSV::Simple

インストール完了。やっぱり便利>cpan

これは良さそう。
こいつの特徴は

  • ファイル名を指定すれば,ファイルを読み込み解析する
  • 解析したデータをリストへ出力する
  • 出力されたリストは2次元配列のように扱うことができる
  • 各列にフィールド名をつけることもでき,そのフィールド名でアクセスすることができる
  • 必要なデータ列のみを抜きだすことができる

ようだ。

これの使い方はText::CSV::Simpleの使い方。にまとめる。