LoginSignup
6
6

More than 5 years have passed since last update.

PerlでCSVを処理しようとしてカラム中にカンマがあって困った件

Last updated at Posted at 2015-05-25

Perlでsplitを使ってCSVのデータをばらしていろいろやってたらどうもうまくいかないので
おかしいなと思ったら"foo,bar"みたいなカラムがあってほげらってしまっていた。

そこで Text::ParseWords を使うと若干幸せになれるとのこと。

こういうCSVファイルがあったとする(hoge.csv)

aaa,bbb,"ccc,ddd",eee
aaa,bbb,"111,222",eee

こういう感じで処理してみると

#!/usr/bin/perl

use Text::ParseWords;

$file = "hoge.csv";
open (IN, $file) or die "$!";
while (<IN>) {
        chomp ($_);
                @data = &parse_line(',',1, $_);
                print "$data[2]\n";
}

こうなる

"ccc,ddd"
"111,222"

"" がいらないなーという場合は parse_line の2番めのパラメータを undef する

@data = &parse_line(',',undef, $_);

そうするとこうなる

ccc,ddd
111,222
6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6