in reply to Re: Apache::Filter and Apache::RegistryFilter
in thread Apache::Filter and Apache::RegistryFilter

i think you've got it. i changed my test script from:

#!/usr/bin/perl use CGI; my $cgi = new CGI(); print $cgi->header(); foreach my $key (keys %ENV) { print "$key: $ENV{$key}<br />\n"; }


#!/usr/bin/perl use Apache; my $r = Apache->request; $r->content_type("text/html"); $r->send_http_header; foreach my $key (keys %ENV) { print "$key: $ENV{$key}<br />\n"; }

and it seems to work now.

do you know of any way to make it work with the former style. i usually take as much advantage of Registry's CGI emulation as possible so i can run scripts as either CGI or Registry. i know i can just put:

if ($ENV{MOD_PERL}) { use Apache; my $r = Apache->request; $r->content_type("text/html"); $r->send_http_header; } else { print $cgi->header(); }

into everything, but i'd rather not have to retrofit all my apps just to make them filterable. at least i know that if i upgrade to apache2, i can make anything filterable with the native filtering API. :)

Replies are listed 'Best First'.
Re: Re: Re: Apache::Filter and Apache::RegistryFilter
by perrin (Chancellor) on Nov 19, 2003 at 21:06 UTC
    You could set the content-type in your httpd.conf, either by file extension or with a directive inside your Location block. A better solution would be modifying Apache::Filter so it notices when you have already sent headers.