XML::RSS と Encode の組み合わせで以下のエラーが発生。

Cannot decode string with wide characters

最初に目にした記事がこちら。
Encode.pm ではまった

なるほど。(って実は良く分かってない...)

次に見つけたのがこちら。
perl//Encode

Q&A にこんなやり取りがありました。

質問: >Wide character in subroutine entry at /path/to/perl/lib/Encode.pm line 154.

 

と言われて死にます。 Encode の bug ですか?

いえ、おそらく仕様です。

このエラーが出て死ぬ原因は、 decode の入力文字列が utf8 (Wide character) 形式になっている、つまり U+0100 以上の文字が含まれていることにあります。

Encode::decode は実際には Encode::find_encoding ($encoding)->decode ($string) をしていますが、この後半の decode が carp しているので、エラー出力には Encode モジュール内で死んだと出るのです。

 

で、結局ソリューションは??と聞きたくなるのですが、ようは UTF-8 のフラグが立ちまくっているので、その状態ではEncodeできませんよということだ。

つまり UTF-8 のフラグを降ろせば先程のエラーは出なくなるはず。
UTF-8 フラグについては延々と書かれているのですが、とりあえずフラグに関するメソッドを探してみるとありました。

_utf8_off(STRING)

これで UTF-8 フラグを降ろしてあげたら見事に Encode に成功です。
この他にも UTF-8 関連のメソッドは、

is_utf8(STRING[,CHECK])
_utf8_on(STRING)

の2つがあるようです。
メソッド名からその内容は想像できますよね。