in reply to I'm not anti-Microsoft, just anti-stupid!

I've never used IIS so if this doesn't help, please ignore it.

Never the less, you can tell CGI::Carp to send it's error messages to a file you specify if you want, and that might help with this point:

IIS doesn't send CGI::Carp messages to the log file, but directly to the browser.

You can do this by:

use CGI::Carp qw/carpout/; use FileHandle; my $fh = new FileHandle; $fh->open("logfile.log") or die "Failed to open logfile: $!"; carpout($fh);
Wrap this in a BEGIN block if you want to send any compilation errors to your file as well.

Of course, if you don't like FileHandle, you can open a standard filehandle and pass that to carpout too. Read the docs.