Un poco de perl

Un poco de perl para que no se me olvide y para compartir con la comunidad. En este caso estaremos utilizando mod_perl2 en un server obviamente con apache2.

Este hermoso codigo nos sirve para capturar todos los parametros que se nos hayan enviado por el request, a mi me es muy util cuando utilizo formas dinamicas y en realidad no sabes exactamente cuantos parametros vas a recibir... obviamente debes tener tu forma de identificarlos.


use strict;

use Apache2::RequestUtil ();
use Apache2::Request;

my $r = Apache2::RequestUtil->request;
my $query = Apache2::Request->new($r);

## aqui capturamos los parametros en el hash args
my %args = map {$_ => $query->param($_) } $query->param;

## si quieres ver lo que has recibido puedes hacer esta mariguanada:
print join "\n", map {"$_ => $args{$_}" } keys %args;

## o mejor aun, de uno en uno para hacer operaciones sobre cada uno
## validando antes de enviar a db por ejemplo:

foreach my $parametro(sort(keys %args))
{
print $parametro."=>".$args{$parametro}."\n";
}

Si estas utilizando catalyst puedes hacer algo similar con $c->request->params


my @params = %{$c->request->params};

## aqui se recibe un arreglo donde el primer elemento
## es el parametro y el segundo su valor
## tal vez pueda mejorarse utilizando
## directamente el hash como el programa de arriba, por lo
## pronto la solución piratona quedó asi:

for(my $i=0;$i<=$#params;$i++) {

if($i % 2)
{
## entran solo impares
my $idParametro= $params[$i - 1];
my $valor= $params[$i];
print "$idParametro => $valor";
}
}

Hermoso!! no ??

2 comentarios:

omaru dijo...

Y yo tengo un código en perl para dinámicamente comparar las variables enviadas a request y obtener dinámicamente sus nombres y valores:

fdasfsdafjk231lñ·"I/321
fdjsklfñsd/()=/·("!?()·"!
fjdskalñfdas/()=·"!·"!/)(=
/=)(·"/()=·"!%))(=/

¿Hermoso no?

:P

Skorpyo dijo...

oh mariguanadas ... bienvenidas sean xD ...

por eso me gusta .net u_u