Provided by: libplack-perl_1.0030-1_all bug

NAME

       Plack::App::CGIBin - cgi-bin replacement for Plack servers

SYNOPSIS

         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.

       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.

AUTHOR

       Tatsuhiko Miyagawa

SEE 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.