Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CGI::Emulate::PSGI(3) User Contributed Perl DocumentationCGI::Emulate::PSGI(3)

NAME
       CGI::Emulate::PSGI - PSGI adapter for CGI

SYNOPSIS
	   my $app = CGI::Emulate::PSGI->handler(sub {
	       # Existing CGI code
	   });

DESCRIPTION
       This module allows an application designed for the CGI environment to
       run in a	PSGI environment, and thus on any of the backends that PSGI
       supports.

       It works	by translating the environment provided	by the PSGI
       specification to	one expected by	the CGI	specification. Likewise, it
       captures	output as it would be prepared for the CGI standard, and
       translates it to	the format expected for	the PSGI standard using
       CGI::Parse::PSGI	module.

CGI.pm
       If your application uses	CGI, be	sure to	cleanup	the global variables
       in the handler loop yourself, so:

	   my $app = CGI::Emulate::PSGI->handler(sub {
	       use CGI;
	       CGI::initialize_globals();
	       my $q = CGI->new;
	       # ...
	   });

       Otherwise previous request variables will be reused in the new
       requests.

       Alternatively, you can install and use CGI::Compile from	CPAN and
       compiles	your existing CGI scripts into a sub that is perfectly ready
       to be converted to PSGI application using this module.

	 my $sub = CGI::Compile->compile("/path/to/script.cgi");
	 my $app = CGI::Emulate::PSGI->handler($sub);

       This will take care of assigning	a unique namespace for each script
       etc. See	CGI::Compile for details.

       You can also consider using CGI::PSGI but that would require you	to
       slightly	change your code from:

	 my $q = CGI->new;
	 # ...
	 print $q->header, $output;

       into:

	 use CGI::PSGI;

	 my $app = sub {
	     my	$env = shift;
	     my	$q = CGI::PSGI->new($env);
	     # ...
	     return [ $q->psgi_header, [ $output ] ];
	 };

       See CGI::PSGI for details.

METHODS
       handler
	     my	$app = CGI::Emulate::PSGI->handler($code);

	   Creates a PSGI application code reference out of CGI	code
	   reference.

       emulate_environment
	     my	%env = CGI::Emulate::PSGI->emulate_environment($env);

	   Creates an environment hash out of PSGI environment hash. If	your
	   code	or framework just needs	an environment variable	emulation, use
	   this	method like:

	     local %ENV	= (%ENV, CGI::Emulate::PSGI->emulate_environment($env));
	     # run your	application

	   If you use "handler"	method to create a PSGI	environment hash, this
	   is automatically called in the created application.

AUTHOR
       Tokuhiro	Matsuno	<tokuhirom@cpan.org>

       Tatsuhiko Miyagawa

COPYRIGHT AND LICENSE
       Copyright (c) 2009-2010 by tokuhirom.

       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       The full	text of	the license can	be found in the	LICENSE	file included
       with this module.

SEE ALSO
       PSGI CGI::Compile CGI::PSGI Plack CGI::Parse::PSGI

perl v5.32.1			  2014-09-08		 CGI::Emulate::PSGI(3)

NAME | SYNOPSIS | DESCRIPTION | CGI.pm | METHODS | AUTHOR | COPYRIGHT AND LICENSE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=CGI::Emulate::PSGI&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help