p5 cgi emulate psgi
1.0.0
CGI :: Emulate :: PSGI -PSGI适配器用于CGI
my $app = CGI::Emulate::PSGI->handler(sub {
# Existing CGI code
});
该模块允许为CGI环境设计的应用程序在PSGI环境中运行,从而在PSGI支持的任何后端上运行。
它通过将PSGI规范提供的环境转换为CGI规范预期的环境。同样,它捕获了为CGI标准准备的输出,并将其转换为使用CGI :: Parse :: PSGI模块的PSGI标准的格式。
如果您的应用程序使用CGI,请确保自己清理处理程序循环中的全局变量,因此:
my $app = CGI::Emulate::PSGI->handler(sub {
use CGI;
CGI::initialize_globals();
my $q = CGI->new;
# ...
});
否则,将在新请求中重复使用以前的请求变量。
另外,您可以安装和使用CGI ::从CPAN编译,并将现有的CGI脚本编译为一个子,该子可以完全准备使用此模块将其转换为PSGI应用程序。
my $sub = CGI::Compile->compile("/path/to/script.cgi");
my $app = CGI::Emulate::PSGI->handler($sub);
这将考虑为每个脚本分配一个唯一的名称空间。有关详细信息,请参见CGI ::编译。
您也可以考虑使用CGI :: PSGI,但这需要您从以下方式稍微更改代码:
my $q = CGI->new;
# ...
print $q->header, $output;
进入:
use CGI::PSGI;
my $app = sub {
my $env = shift;
my $q = CGI::PSGI->new($env);
# ...
return [ $q->psgi_header, [ $output ] ];
};
有关详细信息,请参见CGI :: PSGI。
处理程序
my $app = CGI::Emulate::PSGI->handler($code);
根据CGI代码参考创建PSGI应用程序代码参考。
emulate_environment
my %env = CGI::Emulate::PSGI->emulate_environment($env);
从PSGI环境哈希中创建一个环境。如果您的代码或框架只需要环境变量仿真,请使用此方法:
local %ENV = (%ENV, CGI::Emulate::PSGI->emulate_environment($env));
# run your application
如果使用handler方法创建PSGI环境哈希,则在创建的应用程序中自动调用。
tokuhiro matsuno [email protected]
Tatsuhiko Miyagawa
版权(c)2009-2010由tokuhirom。
该程序是免费软件;您可以将其重新分配和/或以与Perl本身相同的条款进行修改。
许可证的全文可以在此模块中包含的许可证文件中找到。
PSGI CGI :: Compile CGI :: PSGI Plack CGI :: Parse :: PSGI