PerlにおけるBOM付utf8の扱い
ごくごくたまに遭遇するファイルの文字コード扱いでうざいのが、まさに爆弾のBOM付utf8ですが、今日はこいつPerlでいい感じに扱うモジュールの紹介です。
そもそもBOM付UTF8とは
BOMとは文字コードの識別用のファイルの先頭につく文字列で、Byte Order Markの略らしいです。
Windowsのメモ帳で保存したファイルとかなんだかよくわからないシステムが吐き出すファイルとかについてきます。
UTF8でBOMつけるメリットはよく知りません。ぼくの知識はそんなもんです。
File::BOMが便利
でPerlでよろしくやる方法なんですが、File::BOMってモジュールを使います。
#!/usr/bin/env perl
use File::BOM;
open my $fh, "< :encoding(utf8):via(File::BOM)", "hogehoge.csv"
or die "OutPutByExcel.csv: $!";
で、こんな感じです。open関数の第三引数とかに「:via(File::BOM)」を加えればいいんですね。そもそも、ぼくはopen関数の第三引数の意味あまりわかっていないので、「つなげられるんだ!」ということに驚きました。
終わりに
実は、このネタ7月のTakao.mt 2013の夜の飲み会wで相談したら、ytnobodyさんとxtetsujiさんにもろもろアドバイスもらって、これでいいんだって安心したというhachiojipm++な小ネタなのでした。