http://www.perlmonks.org?node_id=11119873

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks,

I'm trying to use FCGI with CGI::Fast to get the params from the url. My fcgi script is named test.fcgi and I tried accessing it from my browser as test.fcgi?node=appy&action=do_something.

While I'm able to get the value of 'node' in the variable $query, the code doesn't seem to call do_something() that comes from the module Myapp.

####start of script test.fcgi #!/usr/bin/perl -T use lib '/path_to_modules/perl5/lib/perl5'; use lib '/path_to_modules/modules'; use FCGI; use CGI::Fast; use Myapp qw(appy); my $n = 0; my %nodes = ( appy => \&appy, _err => \&error, ); while ( my $q = new CGI::Fast ) { my $query = $q->param('node'); print "Content-type: text/plain\n\n"; ++$n; print "You are request number $n. Have a good day!\n"; print "query: $query\n"; $nodes{ exists $nodes{$query} ? $query : '_err' }(); print "done!\n"; } sub error { print "An error occurred.\n"; } ####end of script test.fcgi ####Myapp module package Myapp; use strict; $|++; use Exporter qw(import); our @EXPORT = qw(appy); use CGI; my $q = CGI->new(); sub appy { my $action = $q->param('action') || 'bailout'; my %actions = ( do_something => \&do_something, ); $actions{ exists $actions{$action} ? $action : '_err' }(); } #---------------------------------- # subroutine do_something #---------------------------------- sub do_something { print "do something called\n"; } ####End Myapp module

Am I doing things correctly?