伊藤清徳の垂直落下式ムーンサルトプレス

PerlとかPHPとかMySQLとか...がんばっても8割だ。

PerlでCSVを扱う

PerlでCSVを読み込むメモ。

これまで私は、
こちらのサイトを参考に正規表現だけで処理していました。

速度が云々あるでしょうけれど、そもそもそんなに速度が気になるのならCSVじゃないデータを使うべきでしょう。ということで、これだけで十分です。

※なお、CSVデータは完全にアプリケーション依存のデータフォーマットで入出力するアプリケーションによって形式が異なります。この記事ではMS-AccessのCSVを前提に書きます。エクセルも問題ないと思います。それ以外のアプリケーションでの動作は考慮していませんので、必要に応じて書き換えて使ってください。


ですが、CPANのモジュールも活かさないとそれはそれでもったいないので、今回はそちらを使ったときのメモ。

いくつかのモジュールがあり、中には数々の文字コードのCSVの処理を考慮したものもありますが、エクセルでの出力で最も多いであろうShift-JISのデータを扱うには、Text::CSVをバイナリモードで使うのが一番トラブルが少ないようです。

じゃぁやってみよう!

use strict;
use Text::CSV;
use IO::File;


#CSVファイルを開きます。
my $file = "CSVのパス";
my $io = IO::File->new( $file, 'r' );

#解析をはじめましょう。 my $csv = Text::CSV->new({binary => 1});
while (not $io->eof and my $columns = $csv->getline($io)) {
#ここでデータを処理する。
#$columnsへ1レコード分のデータが配列への参照として渡されます。
#例:$columns->[0](1列目)
}
exit();

こんな感じ。意外にベタベタと書かないといけない。
Text::CSVは標準モジュールではないので、インストールが必要なことを忘れずに。


ちなみに、Text::CSV::Simpleというモジュールもありまして、こちらを使うと、全CSVのデータを一気に二次元配列として処理してくれます。さすがにこれはデータ量を考えないとアレですが、便利は便利です。合わせて覚えておきたいです。

1 Comment

  1. Nfl jerseys wholesale from china free shipping

コメントを残す

Your email address will not be published.

*