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