GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CGI::PSGI (3)

.ds Aq ’

NAME

CGI::PSGI - Adapt CGI.pm to the PSGI protocol

CONTENTS

SYNOPSIS



  use CGI::PSGI;

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



DESCRIPTION

This module is for web application framework developers who currently uses CGI to handle query parameters, and would like for the frameworks to comply with the PSGI protocol.

Only slight modifications should be required if the framework is already collecting the body content to print to STDOUT at one place (rather using the print-as-you-go approach).

On the other hand, if you are an end user of CGI.pm and have a CGI script that you want to run under PSGI web servers, this module might not be what you want. Take a look at CGI::Emulate::PSGI instead.

Your application, typically the web application framework adapter should update the code to do CGI::PSGI->new($env) instead of CGI->new to create a new CGI object. (This is similar to how CGI::Fast object is initialized in a FastCGI environment.)

INTERFACES SUPPORTED

Only the object-oriented interface of CGI.pm is supported through CGI::PSGI. This means you should always create an object with CGI::PSGI->new($env) and should call methods on the object.

The function-based interface like use CGI :standard does not work with this module.

METHODS

CGI::PSGI adds the following extra methods to CGI.pm:

    env



  $env = $cgi->env;



Returns the PSGI environment in a hash reference. This allows CGI.pm-based application frameworks such as CGI::Application to access PSGI extensions, typically set by Plack Middleware components.

So if you enable Plack::Middleware::Session, your application and plugin developers can access the session via:



  $cgi->env->{plack.session}->get("foo");



Of course this should be coded carefully by checking the existence of env method as well as the hash key plack.session.

    psgi_header



 my ($status_code, $headers_aref) = $cgi->psgi_header(%args);



Works like CGI.pm’s header(), but the return format is modified. It returns an array with the status code and arrayref of header pairs that PSGI requires.

If your application doesn’t use $cgi->header, you can ignore this method and generate the status code and headers arrayref another way.

    psgi_redirect



 my ($status_code, $headers_aref) = $cgi->psgi_redirect(%args);



Works like CGI.pm’s redirect(), but the return format is modified. It returns an array with the status code and arrayref of header pairs that PSGI requires.

If your application doesn’t use $cgi->redirect, you can ignore this method and generate the status code and headers arrayref another way.

LIMITATIONS

Do not use CGI::Pretty or something similar in your controller. The module messes up CGI’s DIY autoloader and breaks CGI::PSGI (and potentially other) inheritance.

AUTHOR

Tatsuhiko Miyagawa <miyagawa@bulknews.net>

Mark Stosberg <mark@summersault.com>

LICENSE

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

SEE ALSO

CGI, CGI::Emulate::PSGI
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CGI::PSGI (3) 2011-05-17

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.