in reply to CGI::header() & What's !DOCTYPE..?

The Doctype is an SGML-type declaration that tells interested user agents which Document Type Definition to use to validate and to interpret the following markup.

This is important in XML-land so that browsers and other programs don't have to do as much guesswork to interpret a document.

That said, I find it hard to believe that printing a header will break sysread. In fact, if you're already using CGI.pm, why not go the extra step and use the param() function to get at your CGI input? Unless I'm way off the mark, you're attempting to read POSTed data from STDIN with sysread (as one would do without CGI.pm).

Depending on how IIS caches information, CGI.pm may have already read the data in, so you'll block until the user agent sends more, which is, effectively, forever until timeout.