最近、PerlのUTF-8関連が話題(宮川さん、Danさん、Yappoさん)だったので。
宮川さんの内容に関しては、UTF-8に限っては、use utf8 で、STDIO、STDOUTは影響しないので、問題ないんじゃないのかなぁとは思いますが。
#!/usr/bin/perl use utf8; print "あいうえお";
であれば、ちゃんと"Wide character in print at ..."が出ます。
逆に、use utf8 で、STDIO、STDOUTで、デコードする場合は、
#!/usr/bin/perl use utf8; use open ":utf8"; use open ":std"; print "あいうえお";
とします。これなら、警告は出ません。
で、本題というか、手前味噌ですが、UTF-8については以前書いたのがあるので、よろしければ(メンテしてないんで古かったらごめんなさい)。(※話題にあがってるところみたいに、先進の内容は含んでません)
かぶってる部分もありますが、PerlIO関連は後者には書いておらず、エラーハンドリング関連は前者には書いてません。
他にも参考になるところは、後者の参考よりコピペ(多少修正)。
Perlの付属ドキュメント
Web
- perl 5.8 の Unicode サポート
- NDO::WebLog Perl 5.8 以降においての Unicode 文字列の扱い方
- 日本語に絡む Unicode ブロックとスクリプト (正規表現)
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)(これはPerl関係ない)
最後のは、Joel on Software で、Unicodeについて語られてます。Unicodeについて、これくらい知っとけって、ことらしい(僕は書籍の方で読みました)。