#!/usr/bin/perl -w use strict; use CGI; oneheader(); my $q = new CGI; print $q->header; print $q->header; close(STDOUT); exit; sub oneheader { my $pid; my $seen = 0; return if $pid = open(STDOUT, "|-"); die "cannot fork: $!" unless defined $pid; while() { if(m/^Content-Type/) { print unless $seen; $seen = 1; } else { print; } } exit; } #### #!/usr/bin/perl -w use strict; use CGI; tie *FILTER, "OneHeader"; my $q = new CGI; select FILTER; print $q->header; print $q->header; print "Foo!\n"; exit; package OneHeader; sub TIEHANDLE { my $class = shift; my $me = 0; bless \$me, $class; } sub PRINT { my $self = shift; foreach my $item (@_) { if($item =~ m/^Content-Type/) { if(not $$self) { $$self = 1; print STDOUT $item; } } else { print STDOUT $item; } } 1; } 1;