文字コード操作(Encode)
UTF8フラグなし → UTF8フラグ付き
my $str = Encode::decode('sjis',$bytes); # $bytesの文字コードはSJISと仮定する
UTF8フラグ付き → (文字コード変換)→ UTF8フラグなし
my $bytes = Encode::encode('euc-jp',$str); # $bytesの文字コードはEUC-JPに変換される
UTF8フラグなし → (文字コード変換)→ UTF8フラグなし
Encode::from_to($bytes,'sjis','euc-jp'); # $bytesの文字コードはSJISからEUC-JPへ破壊的に変換される
どの文字コードか調べる
my $enc = Encode::Guess::guess_encoding($text,qw/euc-jp sjis/); # $textはUTFフラグ付きでもなしでもよい
# utf-8はデフォルトなので指定は不要
print $enc->name,"\n"; # "euc-jp"などと表示される
UTF8フラグ付き →(文字コード変換)→ UTF8フラグ付き
$text = Jcode->new($text,'utf-8')->euc; # UTF8からEUC-JPへの変換される
# $textはUTFフラグ付きでもなしでもよい
参考(perldoc)