I've been working in mod_perl for almost a year now and something which I struggled with, at first, was request routing. The application that I maintain uses a simple hash lookup using $r->uri as the key to the package/method name which should be invoked to respond to the request. I really disliked the inflexibility of this approach so I've since developed a more flexible(recursive) lookup mechanism which allows me to use restful uri's which include path parameters. For example, this code allows me to do things like this,
my $registry = ServiceRegistry->new; $registry->register('SERVICE1', '/api/rest/service1/{param1}/list'); my $service = $registry->find($r->uri); # $r->uri returns '/api/rest/service1/5732/list' print "$service\n"; # Prints "SERVICE1" my $parameters = $registry->extract_parameters($r->uri); # $r->uri returns '/api/rest/service1/5732/list' print $parameters->{'param1'} . "\n"; # Prints 5732 In this example, I'm registering a scalar, for simplicity, but you can register anything(array, hashes, objects, etc). It would take me a little time to clean it up and package it in a way which would be useful to others but, before I go to that trouble, I just wanted to ask if anyone would be interested in my releasing this module on CPAN? John