趣味のプログラム工房

Perl実行エラー

land.toのサーバで動かしていたプログラムですが、xreaに持ってきたら動かなくなりましたorz

と原因を探るために。とりあえずデバッグモードで動かしてみると、
Wide character in print at
と表示される部分が……

どうやらUTF8フラグをつけたまま出力しようとしてるみたいです。
PerlIOレイヤを使用しているはずなんだが…
と思ってましたが、どうやら穴があったようで、ブラウザへの出力とファイルへの出力では記述の方法が違うようです。

具体的には
binmode STDOUT => ":utf8";
の記述はあったのですが
ファイルIOに関する
use open IO => ":utf8";
の記述が抜けていたために、ブラウザにはフラグ無し、ファイルにはフラグありで出力しようとしてエラーとなっていたみたい。

これが分かれば、あとは怖くないですね。