in reply to CGI http header error

Under Linux and Apache your script is working correctly. I think that problem is in Windows server.
Try to look at using NPH scripts and modify your code like this:
#!/usr/bin/perl use strict; use CGI; my $q = new CGI; open(OUT, '>out.html') || die "Couldn't open out file: $!"; print OUT $q->header(-nph=>1), $q->start_html('hello world'), $q->h1('hello world'), $q->end_html; close OUT;
Maybe it will help you.

Update: If I understood clearly, you create and store an html file at Perl script and then retrive it at IIS. In this case, problem will able to resolve using my example (I can not check it because I use Linux on my computer). But if you retrive this html file at Perl script, of course, you can add on end of your script something like this:

open (FILE, '/tmp/out.html') || die $!; while(my $row = <FILE>) { print $row } close FILE or die $!;
And block END {} is destructor of package (BEGIN {} is package constuctor). So, you don't need use it in scripts.

      
--------------------------------
SV* sv_bless(SV* sv, HV* stash);