Variáveis do GET e POST no Perl

by

Dando continuidade à tentativa de fazer algo web com Perl, acho que o próximo passo pode ser receber parâmetros vindos de um formulário ou url.

O primeiro script de teste ficou assim:

use strict;
use warnings;
 
my $r = shift;
 
$r->content_type('text/html');
 
print '<h1>Funcionou!</h1>';

O script é executado pelo modperl como se fosse uma função e recebe como parâmetro um objeto do tipo Apache2::RequestRec. Quando fazemos o shift, este parâmetro passa para a variável local $r.

Para ter acesso aos dados submetidos por GET ou POST de forma legível, precisamos instanciar um objeto Apache2::Request, que recebe no construtor o RequestRec da requisição atual:

use strict;
use warnings;
 
use Apache2::Request;
 
my $r = shift;
my $req = Apache2::Request->new($r);
 
$r->content_type('text/html');
 
print '<h1>Funcionou!</h1>';

Os parâmetros passados, tanto por GET quanto por POST, estão disponíveis pelo accessor param:

use strict;
use warnings;
 
use Apache2::Request;
 
my $r = shift;
my $req = Apache2::Request->new($r);
 
$r->content_type('text/html');
 
print '<h1>Funcionou!</h1>';
 
print $req->param('variavel_por_get');
print $req->param('variavel_por_post');

Caso o nome da variável não seja passado para o accessor, ele retorna um array que pode ser iterado, como neste caso:

use strict;
use warnings;
 
use Apache2::Request;
 
my $r = shift;
my $req = Apache2::Request->new($r);
 
$r->content_type('text/html');
 
foreach my $param ( $req->param ) {
    print "$param: ", $req->param($param), "<br />";
}

Além do accessor param, os dados do POST também estão no accessor body. Para acessar uma variável exclusivamente submetida por POST fica assim:

use strict;
use warnings;
 
use Apache2::Request;
 
my $r = shift;
my $req = Apache2::Request->new($r);
 
$r->content_type('text/html');
 
print '<h1>Funcionou!</h1>';
 
print $req->body('somente_variavel_por_post');

Assim como no param, também é possível ter um array com o nome dos parâmetros passados por POST ao acessar o body sem nenhum argumento.

E é isso.

Referências:

Anúncios

2 Respostas to “Variáveis do GET e POST no Perl”

  1. Dyego Says:

    Tive uma pequena dificuldade na hora de implementar as dicas deste post, pois foi necessário instalar uma nova biblioteca do CPAN e habilitar o módulo no Apache.
    Seguem os comando que tive que realizar para trabalhar como variáveis proveniente de formulários:
    $ sudo apt-get install libapache2-request-perl
    $ sudo apt-get install libapreq2
    Verifique se o módulo esta habilitado:
    $ cd /etc/apache2/mods-enabled
    $ ls | grep apreq.load
    Se o arquivo existir ótimo, não precisa fazer nada, caso contrário habilite o módulo com o comando abaixo.
    $ sudo ln -s ../mods-available/apreq.load apreq.load

    Comigo funcionou.

  2. garotosopa Says:

    Outra forma de habilitar o módulo no Apache é com sudo a2enmod apreq.

    Esse nome esquisito vem de apache2 enable module.

    Pra desabilitar é a2dismod.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s


%d blogueiros gostam disto: