Perl Advent Calendar 2006-12-04

Você é bonzinho ou malvado?

por Jerrad Pierce

Como comumente acontece com sistemas de template, muitos tentam implementar o seu próprio processador de parâmetros para CGI. Contudo, no momento em que a idéia da implementação desta gambiarra surgisse ela seria confrontada com pedidos desesperados para que você "use CGI!" Muitas vezes (descontados os casos de pura ignorância) essas soluções "caseiras" surgem a partir de um desejo de evitar todo o peso do módulo CGI. E se você realmente não precisar de todos os seus recursos? Talvez você tenha decidido tentar sair da "lista de malvados" de alguem e está usando algo como o módulo HTML::Template, fazendo com que todos os métodos de geração de HTML do módulo CGI sejam dispensáveis. Neste caso, talvez você esteja interessado no elegante módulo CGI::Minimal. Dependendo do seu método de medida, o módulo CGI::Minimal possui 1/6 das linhas e 1/9 dos bytes que constituem o módulo CGI. O resultado, de acordo com os (antigos) benchmarks incluído na documentação é um ganho de velocidade de 4x para scripts CGIs convencionais. E, como o nosso simples exemplo cgiecho mostra 1, a interface do módulo é familiar o suficiente. Então vá em frente e dê uma experimentada, o que você tem a perder?

mod4.pl


   1 #Be sure to use -T and maybe CGI::Untaint if you do anything more substantial
   2 use CGI::Minimal;
   3 use Data::Dumper;
   4 
   5 my($q, %p);
   6 
   7 $q = new CGI::Minimal;
   8 $p{$_} = $q->param($_) foreach $q->param();
   9 
  10 print "Content-type: text/plain\n\n";
  11 
  12 $Data::Dumper::Sortkeys =1 ;
  13 print Data::Dumper::Dumper \%p;

Veja também

O módulo CGI::Simple para uma solução intermediária entre o CGI convencional e o CGI::Minimal.

1. Nenhum sistema de template foi utilizado pois seria algo além do escopo do exemplo.

Traduzido por Nilson Santos Figueiredo Júnior.