use utf8とencoding、decode
Perlで日本語処理を行うときに欠かせないエンコーディング。
これってわかりにくくありません?
自慢じゃないですが、小生は毎回混乱します(本当に自慢じゃない)。
基本的には
http://www.rwds.net/kuroita/program/Perl_unicode.html
に盲目的にしたがってコードを書けば、まず問題ないのですが
正しい理解を得る上で何が混乱を引き起こすかというと、UTF8フラグですよね。
use utf8;
を宣言し、コード内の日本語をUTF8で記述。
そして、外部から入力される日本語に全てUTF8フラグを立てると
日本語を使った正規表現もお手の物なわけですが
UTF8フラグを立てる方法が
ファイルハンドルが対象のときは
open IN, "<:encoding(euc-jp)", "hoge.txt";
と"encoding"なのに対して、変数では
$str = Encode::decode("ascii", $str);
と"decode"なわけですよ、"encode"じゃなく。
なんという罠。なんど引っ掛かったことかと(自らの学習能力のなさに愕然)。
ま、逆に、この点さえ抑えておけば話は簡単なので
ここにメモしとこうと思った次第。