Text::CSV
Excelで作られた表を PostgreSQL で作ってあるデータベースに放り込むために、とりあえず CSV で書き出してから perl で処理。テキスト部分にダブルクオートやコンマが含まれてたりするとパースが面倒だけど、そういうところも見当たらないので、手っ取り早く split(/,/) でやっちゃおうかと思ったけど、後々のために、ちゃんとパースするようにしておこう。
ってことで、Text::CSV を使ってみたんだけど……あれ? なんか漢字の使ってある行が処理されてないぞ? その行で parse に失敗してる?
いろいろ調べてみたら、perldoc Text::CSV の最後のほうに
Allowable characters within a CSV field include 0x09 (tab) and the inclusive range of 0x20 (space) through 0x7E (tilde).
って書かれてた。そうですか。使える文字は ASCII の範囲だけですか。UTF8で書いても日本語はだめですか。そうですか orz
8bit clean な Text::CVS_XS ってのもあるのに気づいたので使ってみたけど、結局、
としてバイナリが通るようにして使うってことらしい。UTF8のテキストだと、エンコードしたりデコードしたりで結構面倒。
結局 split を使いましたとさ。