NAME¶
Mojolicious::Plugin::CGI - Run CGI script from Mojolicious
VERSION¶
0.12
DESCRIPTION¶
This plugin enable Mojolicious to run Perl CGI scripts. It does so by forking a
new process with a modified environment and reads the STDOUT in a non-blocking
matter.
SYNOPSIS¶
use Mojolicious::Lite;
plugin CGI => [ '/script' => '/path/to/cgi/script.pl' ];
plugin CGI => {
route => '/mount/point',
script => '/path/to/cgi/script.pl',
env => {}, # default is \%ENV
errlog => '/path/to/file.log', # path to where STDERR from cgi script goes
before => sub { # called before setup and script start
my $c = shift;
# modify QUERY_STRING
$c->req->url->query->param(a => 123);
},
};
app->start;
ATTRIBUTES¶
env¶
Holds a hash ref containing the environment variables that should be used when
starting the CGI script. Defaults to %ENV when this module was loaded.
ioloop¶
Holds a Mojo::IOLoop object.
METHODS¶
emulate_environment¶
%env = $self->emulate_environment($c);
Returns a hash which contains the environment variables which should be used by
the CGI script.
In addition to "env", these dynamic variables are set:
CONTENT_LENGTH, CONTENT_TYPE, HTTP_COOKIE, HTTP_HOST, HTTP_REFERER,
HTTP_USER_AGENT, HTTPS, PATH, PATH_INFO, QUERY_STRING, REMOTE_ADDR,
REMOTE_HOST, REMOTE_PORT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME,
SERVER_PORT, SERVER_PROTOCOL.
Additional static variables:
GATEWAY_INTERFACE = "CGI/1.1"
SERVER_ADMIN = $ENV{USER}
SCRIPT_FILENAME = Script name given as argument to register.
SERVER_NAME = Sys::Hostname::hostname()
SERVER_SOFTWARE = "Mojolicious::Plugin::CGI"
register¶
$self->register($app, [ $route => $script ]);
$self->register($app, %args);
$self->register($app, \%args);
"route" and path need to exist as keys in %args unless given as plain
arguments.
$route can be either a plain path or a route object.
COPYRIGHT AND LICENSE¶
Copyright (C) 2014, Jan Henning Thorsen
This program is free software, you can redistribute it and/or modify it under
the terms of the Artistic License version 2.0.
AUTHOR¶
Jan Henning Thorsen - "jhthorsen@cpan.org"