use strict;
use warnings;
use 5.014;定型文。5.014はUnicodeがそれなりに使えそうな最低限のバージョンということで。
use utf8;ソースファイル中の文字列リテラルが内部表現に変換されるようにする。スクリプトをUTF-8で保存せよ。
use open ':encoding(UTF-8)';open でのファイルのIO (PerlIO)での文字コードをUTF-8にする。もちろん入出力したいファイルがUTF-8ではない場合は変える必要がある。
:encoding(utf8) と :encoding(UTF-8) は違うらしい(参照)。読み込みの安全性を考えるとUTF-8のほうが良いらしいのでそちらにした。
use Encode::Locale;
binmode(STDIN, ":encoding(console_in)");
binmode(STDOUT, ":encoding(console_out)");
binmode(STDERR, ":encoding(console_out)");
Encode::Locale::decode_argv;標準入出力の文字コードを端末のものに合わせる。これで何も考えなくても普通に say とかできる。
use Encode::Locale は console_in などを使うのに必要。
Encode::Locale::decode_argv;はコマンドライン引数もデコードするようにする。