不可解なところ
use encoding 'euc-jp';
上記は、すべての文字列を EUC-JP で利用する宣言と理解した。しかし、
$content = decode('shiftjis', $content); # コンテンツのコード変換
なぜ、Shift-JIS で取り込んだテキストデータを、Shift-JIS にデコードをして出力するのかわからない。例えば、
$content = decode('euc-JP', $content);
と書き換えると、
"\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. "\x{fffd}" does not map to euc-jp at ./9.pl line 24. \x{fffd}\x{fffd}\x{fffd}t\x{fffd}b\x{fffd}^\x{fffd}[\x{fffd}I\x{fffd}\x{fffd}
とエラーが表示される。また、読み込んだテキストデータが Shift-JIS だということで、
$content = encode('euc-JP', $content);
と書き換えて実行をすると、文字化けして表示される。
???t?b?^?[?I?? 危険情報が出ています! 詳細は http://www.anzen.mofa.go.jp/ を見てください。
非常に基本的なことだからなのかわからないが、この decode 関数について詳細に書かれている資料が見つからない。