MediaLab Love Chapter 2

Assistance of MediaLab Love about Javascript test and more...

PerlでUTF-8のファイルを開くときはBOM無しにした方がよい

use strict;
use warnings;
use utf8;
use encoding 'UTF-8';
use open ':utf8';
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

中略

open my $FH, "<:utf8" , 以下略(ファイル名)

while (readline $FH){
  chomp;
  @temp = split(/,/,$_);

  print $temp[0];

という風にしたら、

?あああ

と言う風に?が出ちゃいます。最初分からなかったのですが、?の正体はBOMみたいです。

Perl 5.8.x 以降で BOM を操作するモジュール ハードなソフトの話/ウェブリブログを見ると、BOMを取り除くモジュールがあるようですが、面倒なので最初からBOMなしのファイルを使った方が良さそうです。