perlのText::CSVで囲み文字指定時はエスケープ文字指定も忘れずに!

PerlでCSVを扱う際に使用するモジュール Text::CSV。

基本的な使い方は他の色々なサイトで解説されているため省略。

CPANページは以下。
Text::CSV - comma-separated values manipulator (using XS or PurePerl) - metacpan.org
comma-separated values manipulator (using XS or PurePerl)


上記サイトにも書かれていますが、Text::CSVをnewする際に様々なオプションを指定できます。

区切り文字や囲み文字などは指定する機会が多いかもしれません。

それぞれ0x20 (space) から 0x7e (tilde)までの文字が使用できると解説されています。
大抵の文字、記号が使用できますね。

囲み文字はデフォルトではダブルクォート(”)が設定されていますが、
これをシングルクォート(’)などに変更する際には注意が必要です。

quote_charオプションにシングルクォートを指定するのですが、ここを変更しただけではシングルクォート囲いの文字列を正しく取り込むことができません。
escape_charもシングルクォート設定に変更する必要があります。
escape_charの説明中に、escape_charとquote_charは同じ設定でなければならないという内容の記載があります。
quote_char、escape_char両方にシングルクォートを設定すると、シングルクォート囲いの文字列を正しく取り込むことができます。
他の囲み文字でも同様に両方設定します。



中々見落としがちな部分だと思いますので注意が必要です。

 
Web開発
NRBMをフォローする
年中暁を覚えず・・・・

コメント

タイトルとURLをコピーしました