IIS4.0→IIS6.0に移行したサーバでCGIを動かす

IIS6.0+perlis.dllの環境下では以前のIIS4.0+Perl.exe環境と違いサーバはレスポンス時にヘッダを吐いてくれない。この点を意識していないとハマる。
とりあえず

print "Content-type: text/html\n";
print "Content-length: 100\n\n";

は書いておくこと。通常はContent-typeだけで問題ないのだがFOMAのようにContent-length必須なブラウザもあるのででっち上げでも良いのでContent-lengthを書いておくこと。
また、Locationヘッダで転送を行いたい場合

print "Status: 301 Permanently Moved";
print "Location: http://hogehoge/i/index.html";

でとりあえず301を返しておかないとブラウザ側が勝手にエラーにしてしまうことがあるので注意。Locationをつけるときは大概本文は空のはずだがその状態でStatus: 200だとダメなブラウザも存在する。要は真面目にRFC読んでそれに準拠して書けってことなんですがね・・・。
オマケ。上記を含めたindex.cgiを設置し、HTTPで会話した結果。

$ telnet 192.168.1.10 80
Trying 192.168.1.10....
Connected to 192.168.1.10.
Escape character is '^]'.
GET /index.cgi HTTP/1.1
User-Agent: DoCoMo
HOST: 192.168.1.10 

HTTP/1.1 301 Permanently Moved
Location: http://hogehoge/i/index.html
Content-type: text/html; charset=Shift_JIS
Content-length: 80

Connection closed by foreign host.