table of contents
other versions
- wheezy 0.9989-1+deb7u1
- wheezy-backports 1.0030-1~bpo70+1
- jessie 1.0033-1
- testing 1.0042-1
- unstable 1.0042-1
Plack::App::CGIBin(3pm) | User Contributed Perl Documentation | Plack::App::CGIBin(3pm) |
NAME¶
Plack::App::CGIBin - cgi-bin replacement for Plack serversSYNOPSIS¶
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 line plackup -MPlack::App::CGIBin -e 'Plack::App::CGIBin->new(root => "/path/to/cgi-bin")->to_app'
DESCRIPTION¶
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.
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.
AUTHOR¶
Tatsuhiko MiyagawaSEE ALSO¶
Plack::App::File CGI::Emulate::PSGI CGI::Compile Plack::App::WrapCGI See also Plack::App::WrapCGI if you compile one CGI script into a PSGI application without serving CGI scripts from a directory, to remove overhead of filesystem lookups, etc.2011-11-02 | perl v5.14.2 |