2006-01-26 CGI::CookieとApache::Cookieの微妙な関係 技術 mod_perlとCGIが混在する環境*1で、CGI::CookieとApache::Cookieを両方使ってみたんだがここに大きな落とし穴。この二つのモジュールは「+」の扱いが違う。 CGI::Cookie->new(-name => 'a', -value => '1+2 3'); では、「a=1%2B2%203; path=/」と言うクッキーになり、 Apache::Cookie->new($r, -name => 'a', -value => '1+2 3'); だと「a=1+2%203; path=/」と言うクッキーができあがる。よって、Apache::Cookieから発行したクッキーをCGI::Cookieでfetchすると、+がスペースに変換されたデータが手に入る。アイタタタ。 *1:mod_perlに移行できない古いCGI資源があるです