CGI.pmとuse open ":std"

CGI.pmで、POSTされたフォーム内容のparseが何かおかしい、でアップロードされたファイルの内容に他のフォームの内容が混ざる、てかこれmultipartメッセージの分解間違ってね? CGI.pmのバグか?


とかいう変なハマり方をしたのだが、結論としては「use open “:utf8″」と「use open “:std”」が原因だった模様。



この2つをuseすると、multipartメッセージのデリミタがうまく認識されないようだ。ちなみに$CGI::VERSIONは3.15。



しかも、この状態だとIO::FileとかでopenしたファイルのI/Oがutf-8で行われなくなるというおまけ付き。なんじゃそりゃー。



最近は無意識的にPerlソースコードの先頭に

use utf8;

use open “:utf8”;
use open “:std”; を付けてしまっていたのが元凶といえばそうなのだが、2時間ぐらい無駄に消えた気がする……。

Permalink | コメントを読む | hylomの日記