Cgi :: emulate :: psgi - адаптер PSGI для CGI
my $app = CGI::Emulate::PSGI->handler(sub {
# Existing CGI code
});
Этот модуль позволяет приложению, предназначенному для среды CGI, работать в среде PSGI, и, следовательно, на любые бэкэнды, которые поддерживает PSGI.
Он работает путем перевода среды, предоставленной спецификацией PSGI, в ожидаемой спецификации CGI. Аналогичным образом, он фиксирует выход, поскольку он будет готов для стандарта CGI, и переводит его в формат, ожидаемый для стандарта PSGI с использованием модуля CGI :: Parse :: PSGI.
Если ваше приложение использует CGI, обязательно очистите глобальные переменные в обработке сами, так что:
my $app = CGI::Emulate::PSGI->handler(sub {
use CGI;
CGI::initialize_globals();
my $q = CGI->new;
# ...
});
В противном случае предыдущие переменные запроса будут повторно использованы в новых запросах.
В качестве альтернативы, вы можете установить и использовать CGI :: Compile из CPAN и собирать существующие сценарии CGI в подставку, которая идеально готова для преобразования в приложение PSGI с использованием этого модуля.
my $sub = CGI::Compile->compile("/path/to/script.cgi");
my $app = CGI::Emulate::PSGI->handler($sub);
Это позаботится о назначении уникального пространства имен для каждого сценария и т. Д. См. CGI :: Compile для деталей.
Вы также можете рассмотреть возможность использования 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);
Создает ссылку на код приложения PSGI из ссылки на код CGI.
Эмулят_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]
Тацухико Миягава
Авторские права (C) 2009-2010 гг. Токухирум.
Эта программа является бесплатным программным обеспечением; Вы можете перераспределить его и/или изменить его в соответствии с теми же условиями, что и сам Perl.
Полный текст лицензии можно найти в файле лицензии, включенного в этот модуль.
Psgi cgi :: compile cgi :: psgi plack cgi :: parse :: psgi