Pelo jeito preciso estudar mais isso. Referencias?


Em 9/1/2011 20:56, Eden Cardim escreveu:
"Prof" == Prof Benedito A Cruz<[email protected]>  writes:
     Prof>  Não entendi porque seria uma gambiarra...

Dá uma olhada no source do ModPerl::RegistryCooker, que é quem
efetivamente converte scripts cgi em handlers de mod_perl, em
particular, a subrotina convert_script_to_compiled_handler, que contém
esse trecho de código:

     my $eval = join '',
                     'package ',
                     $self->{PACKAGE}, ";",
                     "sub handler {",
                     "local \$0 = '$script_name';",
                     $nph,
                     $shebang,
                     $line,
                     ${ $self->{CODE} },
                     "\n}"; # last line comment without newline?

Se você quiser mesmo usar mod_perl, a forma correta é escrever um
handler tipo esse:
http://search.cpan.org/~gozer/mod_perl-2.0.4/docs/user/intro/start_fast.pod#Handler_Modules

Uma alternativa mais "moderna" é escrever tua aplicação usando um
middleware como o Plack, que é uma implementação de PSGI. Aí você vai
conseguir implantar tua aplicação nos ambientes CGI, FastCGI, mod_perl
(1 e 2), ou até transformar sua aplicação num servidor HTTP standalone o
que significa que você nem vai precisar de apache (ou qualquer outro web
server), isso tudo sem mecher em nada do código da aplicação.

É bem simples, você escreve algo assim:

http://search.cpan.org/perldoc?Plack#.psgi_files

E pra implantar no mod_perl2, você usa isso:

http://search.cpan.org/perldoc?Plack::Handler::Apache2

O recomendável mesmo, é além disso, você usar um framework como
Catalyst, Web::Simple, Mojo ou Dancer. Todos eles tem suporte a PSGI e
por isso, rodam em qualquer lugar onde o Plack conseguir rodar.




--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a