Response headers can be added by any part of the system at basically any time (Unless you've sent a blank line already), so basically you are stuck. If you can some how arrange for your module to be loaded before any headers are sent, you could tie STDOUT and capture the headers before sending them off.
Response headers can be added by any part of the system at basically any time (Unless you've sent a blank line already), so basically you are stuck.
And proxies can add even more headers while forwarding the response... Depending on what the OP wants, using firefox with the live HTTP headers plugin can be used to display the headers as they arrive at the browser.
Otherwise you might also be able to capture the STDOUT output of the called subroutines (if it doesn't use STDOUT explicitly):
#!/usr/local/bin/perl -w
use strict;
sub prints_headers {
print "Content-type: text/html\n\n";
}
my $output;
open my $NEWSTDOUT,">",\$output;
select $NEWSTDOUT;
prints_headers();
select STDOUT;
print "Captured '$output'\n";