I'm having some issues with <Perl> sections. Basically what I have is a setup
like this:
httpd.conf:
<Perl>
my %handlers = (
'/foo' => { HANDLER => 'GKG::Foo', FILTER => 1 },
'/bar/foo' => { HANDLER => 'GKG::FooBar' }
);
for my $i (keys %handlers) {
my %conf = %{$handlers{$i}};
$Location{$i} = {
PerlHandler => $conf{HANDLER},
SetHandler => 'perl-script'
};
if (defined $conf{FILTER}) {
push @{ $Location{$i}->{PerlSetVar} }, ['Filter', 'On'];
}
}
</Perl>
The problem is that when this gets configured it does not seem to correctly
deal with the URL locations. In my case, both /foo and /bar/foo execute
GKG::Foo. It seems to think that since location "/bar/foo" contains "/foo"
that it should use the handler "GKG::Foo" instead of handler "GKG::FooBar".
Also, standard static urls such as "/js/foo.js" end up getting caught by mod
perl and the output from "GET /js/foo.js" will be the content from the
perl-handler GKG::Foo, not the contents of the static file /js/foo.js!
If I configure it without perl-sections like this:
<Location /foo>
SetHandler perl-script
Perlhandler GKG::Foo
</Location>
<Location /bar/foo>
SetHandler perl-script
Perlhandler GKG::FooBar
</Location>
Then it works correctly. So there definately seems to either be a problem with
Perl sections, or the semantics of using %Location inside a Perl section does
not agree with the standard <Location> block.
Does anyone have any ideas what might be the problem here? Is this a bug, or
am I just using this incorrectly?
Thanks for any ideas :).
I'm using mod_perl 1.24, perl 5.6.0 Linux 2.2.x
Mike