Plack::App::CGIBin3pm
Cgi-bin replacement for plack servers
Usage
use Plack::App::CGIBin;use Plack::Builder;my $app = Plack::App::CGIBin->new(root => "/path/to/cgi-bin")->to_app;builder {mount "/cgi-bin" => $app;};# Or from the command lineplackup -MPlack::App::CGIBin -e 'Plack::App::CGIBin->new(root => "/path/to/cgi-bin")->to_app'
Overview
Plack::App::CGIBin allows you to load CGI scripts from a directory and convert them into a PSGI application.
This would give you the extreme easiness when you have bunch of old CGI scripts that is loaded using cgi-bin of Apache web server.
How it works
This application checks if a given file path is a perl script and if so, uses CGI::Compile to compile a CGI script into a sub (like ModPerl::Registry) and then run it as a persistent application using CGI::Emulate::PSGI.
If the given file is not a perl script, it executes the script just like a normal CGI script with fork & exec. This is like a normal web server mode and no performance benefit is achieved.
The default mechanism to determine if a given file is a Perl script is as follows:
- •
-
Check if the filename ends with
".pl". If yes, it is a Perl script.
- •
-
Open the file and see if the shebang (first line of the file) contains the word
"perl"(like"#!/usr/bin/perl"). If yes, it is a Perl script.
You can customize this behavior by passing "exec_cb" callback, which takes a file path to its first argument.
For example, if your perl-based CGI script uses lots of global variables and such and are not ready to run on a persistent environment, you can do:
my $app = Plack::App::CGIBin->new(root => "/path/to/cgi-bin",exec_cb => sub { 1 },)->to_app;
to always force the execute option for any files.
Releases
8 releases since Debian 6.0 (Squeeze); the text changed 7 times.