hylomの日記: CGI.pmとuse open ":std"
日記 by
hylom
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時間ぐらい無駄に消えた気がする……。
CGI.pmとuse open ":std" More ログイン