Bruce McKenzie wrote: > CGI::Application::Dispatch is a favorite plugin of many on this list, > and it used to be one of mine, but it stopped working in my setup at > version 2.x. Never figured out why, and I'm OK doing things the > old-fashioned way, but I thought I'd give it another shot. > > Suppose I have: > > directory cgi-bin/admin containing > a webapp called "test.pl" > a directory Modules,
Btw, this is normally called "lib" and not "Modules" for most Perl projects. > which contains Notify.pm > which has a run mode "test" > > I want to call the following under normal CGI > http://localhost/cgi-bin/admin/test.pl/notify/test > > What is the simplest way to write the dispatch app? As I understand the > documentation, this should do the right thing: > > #!/usr/bin/perl > use strict; > use FindBin qw($Bin); > use lib "$Bin/Modules"; # add "Modules" dir to @INC just in case > use CGI::Application::Dispatch(); > > CGI::Application::Dispatch->dispatch(prefix=>"Modules"); Is your module's package called "Modules::Notify" or just "Notify"? If it's the first then change your "use lib" line to: use lib $Bin; If it's the latter, then you don't need a prefix at all: CGI::Application::Dispatch->dispatch(); > But, obviously, I don't understand the documentation, because, this, and > every other attempt at it produces only a "Not Found" error. You can turn on debugging to see how things are getting translated by putting debug => 1 into your call to dispatch(). But it basically works like this (using your example url test.pl/notify/test): 1) look at the first part of the path, "notify", and run it through translate_module_name() so that it becomes "Notify" 2) Add any defined prefix so that it becomes "Modules::Notify". 3) Modules::Notify is "require"d which means Perl will look in @INC for a file named Modules/Notify.pm and that has a package name of Modules::Notify. -- Michael Peters Plus Three, LP ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################