Catalyst::Controller::CGIBin - Serve CGIs from root/cgi-bin
In your controller:
package MyApp::Controller::Foo; use parent qw/Catalyst::Controller::CGIBin/;
In your .conf:
<Controller::Foo> cgi_root_path cgi-bin cgi_dir cgi-bin cgi_chain_root /optional/private/path/to/Chained/root cgi_file_pattern *.cgi # or regex cgi_file_pattern /\.pl\z/ <CGI> username_field username # used for REMOTE_USER env var pass_env PERL5LIB pass_env PATH pass_env /^MYAPP_/ </CGI> </Controller::Foo>
Dispatches to CGI files in root/cgi-bin for /cgi-bin/ paths.
Unlike ModPerl::Registry this module does _NOT_ stat and recompile the CGI for every invocation. This may be supported in the future if there's interest.
CGI paths are converted into action names using "cgi_action".
Inherits from Catalyst::Controller::WrapCGI, see the documentation for that module for other configuration information.
The global URI path prefix for CGIs, defaults to cgi-bin.
cgi-bin
By default Path actions are created for CGIs, but if you specify this option, the actions will be created as Chained end-points, chaining off the specified private path.
If this option is used, the "cgi_root_path" option is ignored. The root path will be determined by your chain.
The PathPart of the action will be the path to the CGI file.
Path from which to read CGI files. Can be relative to $MYAPP_HOME/root or absolute. Defaults to $MYAPP_HOME/root/cgi-bin.
$MYAPP_HOME/root
$MYAPP_HOME/root/cgi-bin
By default all files in "cgi_dir" will be loaded as CGIs, however, with this option you can specify either a glob or a regex to match the names of files you want to be loaded.
Can be an array of globs/regexes as well.
$self->cgi_action($cgi)
Takes a path to a CGI from root/cgi-bin such as foo/bar.cgi and returns the action name it is registered as.
root/cgi-bin
foo/bar.cgi
$self->cgi_path($cgi)
Takes a path to a CGI from root/cgi-bin such as foo/bar.cgi and returns the public path it should be registered under.
The default is to prefix with $cgi_root_path/, using the cgi_root_path config setting, above.
$cgi_root_path/
cgi_root_path
$self->is_perl_cgi($path)
Tries to figure out whether the CGI is Perl or not.
If it's Perl, it will be inlined into a sub instead of being forked off, see "wrap_perl_cgi".
$self->wrap_perl_cgi($path, $action_name)
Takes the path to a Perl CGI and returns a coderef suitable for passing to cgi_to_response (from Catalyst::Controller::WrapCGI) using CGI::Compile.
$action_name is the generated name for the action representing the CGI file from cgi_action.
$action_name
cgi_action
This is similar to how ModPerl::Registry works, but will only work for well-written CGIs. Otherwise, you may have to override this method to do something more involved (see ModPerl::PerlRun.)
Scripts with __DATA__ sections now work too, as well as scripts that call exit().
__DATA__
exit()
$self->cgi_package($action_name)
Returns the package name a Perl CGI is compiled into for a given $action_name.
$self->wrap_nonperl_cgi($path, $action_name)
Takes the path to a non-Perl CGI and returns a coderef for executing it.
$action_name is the generated name for the action representing the CGI file.
By default returns something like:
sub { system $path }
Catalyst::Controller::WrapCGI, CatalystX::GlobalContext, Catalyst::Controller, CGI, CGI::Compile, Catalyst
Please report any bugs or feature requests to bug-catalyst-controller-wrapcgi at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Catalyst-Controller-WrapCGI. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-catalyst-controller-wrapcgi at rt.cpan.org
Rafael Kitover <rkitover@gmail.com>
Copyright (c) 2008-2015 Rafael Kitover <rkitover@gmail.com> and "CONTRIBUTORS" in Catalyst::Controller::WrapCGI.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Catalyst::Controller::WrapCGI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Catalyst::Controller::WrapCGI
CPAN shell
perl -MCPAN -e shell install Catalyst::Controller::WrapCGI
For more information on module installation, please visit the detailed CPAN module installation guide.