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