CGI :: Emular :: PSGI - Adaptador PSGI para CGI
my $app = CGI::Emulate::PSGI->handler(sub {
# Existing CGI code
});
Este módulo permite que um aplicativo projetado para o ambiente CGI seja executado em um ambiente PSGI e, portanto, em qualquer um dos back -end que o PSGI suporta.
Ele funciona traduzindo o ambiente fornecido pela especificação do PSGI para um esperado pela especificação CGI. Da mesma forma, ele captura a saída, pois seria preparada para o padrão CGI e o traduz para o formato esperado para o padrão PSGI usando o módulo CGI :: parse :: psgi.
Se o seu aplicativo usar CGI, limpe as variáveis globais no loop do manipulador, então:
my $app = CGI::Emulate::PSGI->handler(sub {
use CGI;
CGI::initialize_globals();
my $q = CGI->new;
# ...
});
Caso contrário, as variáveis de solicitação anterior serão reutilizadas nas novas solicitações.
Como alternativa, você pode instalar e usar o CGI :: Compilar com o CPAN e compilar seus scripts CGI existentes em um submarino que está perfeitamente pronto para ser convertido em aplicativo PSGI usando este módulo.
my $sub = CGI::Compile->compile("/path/to/script.cgi");
my $app = CGI::Emulate::PSGI->handler($sub);
Isso cuidará de atribuir um espaço de nome exclusivo para cada script etc. Consulte CGI :: Compile para obter detalhes.
Você também pode considerar o uso do CGI :: PSGI, mas isso exigiria que você altere levemente seu código de:
my $q = CGI->new;
# ...
print $q->header, $output;
em:
use CGI::PSGI;
my $app = sub {
my $env = shift;
my $q = CGI::PSGI->new($env);
# ...
return [ $q->psgi_header, [ $output ] ];
};
Consulte CGI :: PSGI para obter detalhes.
manipulador
my $app = CGI::Emulate::PSGI->handler($code);
Cria uma referência de código de aplicativo PSGI da referência do código CGI.
emular_environment
my %env = CGI::Emulate::PSGI->emulate_environment($env);
Cria um hash de ambiente fora do hash do ambiente do PSGI. Se o seu código ou estrutura precisar apenas de uma emulação de variável de ambiente, use este método como:
local %ENV = (%ENV, CGI::Emulate::PSGI->emulate_environment($env));
# run your application
Se você usa o método handler para criar um hash de ambiente PSGI, isso é chamado automaticamente no aplicativo criado.
Tokuhiro matsuno [email protected]
Tatsuhiko Miyagawa
Copyright (c) 2009-2010 por Tokuhirom.
Este programa é software livre; Você pode redistribuí -lo e/ou modificá -lo nos mesmos termos que o próprio Perl.
O texto completo da licença pode ser encontrado no arquivo de licença incluído neste módulo.
PSGI CGI :: Compile CGI :: psgi plack cgi :: parse :: psgi