1CGI::Emulate::PSGI(3) User Contributed Perl DocumentationCGI::Emulate::PSGI(3)
2
3
4

NAME

6       CGI::Emulate::PSGI - PSGI adapter for CGI
7

SYNOPSIS

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

DESCRIPTION

14       This module allows an application designed for the CGI environment to
15       run in a PSGI environment, and thus on any of the backends that PSGI
16       supports.
17
18       It works by translating the environment provided by the PSGI
19       specification to one expected by the CGI specification. Likewise, it
20       captures output as it would be prepared for the CGI standard, and
21       translates it to the format expected for the PSGI standard using
22       CGI::Parse::PSGI module.
23

CGI.pm

25       If your application uses CGI, be sure to cleanup the global variables
26       in the handler loop yourself, so:
27
28           my $app = CGI::Emulate::PSGI->handler(sub {
29               use CGI;
30               CGI::initialize_globals();
31               my $q = CGI->new;
32               # ...
33           });
34
35       Otherwise previous request variables will be reused in the new
36       requests.
37
38       Alternatively, you can install and use CGI::Compile from CPAN and
39       compiles your existing CGI scripts into a sub that is perfectly ready
40       to be converted to PSGI application using this module.
41
42         my $sub = CGI::Compile->compile("/path/to/script.cgi");
43         my $app = CGI::Emulate::PSGI->handler($sub);
44
45       This will take care of assigning a unique namespace for each script
46       etc. See CGI::Compile for details.
47
48       You can also consider using CGI::PSGI but that would require you to
49       slightly change your code from:
50
51         my $q = CGI->new;
52         # ...
53         print $q->header, $output;
54
55       into:
56
57         use CGI::PSGI;
58
59         my $app = sub {
60             my $env = shift;
61             my $q = CGI::PSGI->new($env);
62             # ...
63             return [ $q->psgi_header, [ $output ] ];
64         };
65
66       See CGI::PSGI for details.
67

METHODS

69       handler
70             my $app = CGI::Emulate::PSGI->handler($code);
71
72           Creates a PSGI application code reference out of CGI code
73           reference.
74
75       emulate_environment
76             my %env = CGI::Emulate::PSGI->emulate_environment($env);
77
78           Creates an environment hash out of PSGI environment hash. If your
79           code or framework just needs an environment variable emulation, use
80           this method like:
81
82             local %ENV = (%ENV, CGI::Emulate::PSGI->emulate_environment($env));
83             # run your application
84
85           If you use "handler" method to create a PSGI environment hash, this
86           is automatically called in the created application.
87

AUTHOR

89       Tokuhiro Matsuno <tokuhirom@cpan.org>
90
91       Tatsuhiko Miyagawa
92
94       Copyright (c) 2009-2010 by tokuhirom.
95
96       This program is free software; you can redistribute it and/or modify it
97       under the same terms as Perl itself.
98
99       The full text of the license can be found in the LICENSE file included
100       with this module.
101

SEE ALSO

103       PSGI CGI::Compile CGI::PSGI Plack CGI::Parse::PSGI
104
105
106
107perl v5.36.0                      2023-01-20             CGI::Emulate::PSGI(3)
Impressum