Página 1 de 1

Recepción de Parametros SELECT

NotaPublicado: 2020-07-23 11:24 @516
por seafree
¿Qué tal? Buenos días.

Despliego una interfaz para seleccionar (SELECT) varios campos, con sus diferentes opciones cada uno. Pues bien, cuando recibo los parámetros seleccionados recibo un: HASH(0x20b9460) entre los parámetros recibidos. ¿Alguien me puede decir a qué se debe ésto?

Comentarles que las opciones seleccionas las estoy recibiendo en una HASH con el nombre de campo seleccionado y su valor.

DEFINICIÓN DEL HASH:
my %parametros={};
IMPRESIÓN DE LA DEFICIÓN DEL HASH %parametros
$i=0;
while (my ($k,$v)=each %parametros){
print "$i) KEY: $k VALUE:$v <br>";
$i++;
}

EJEMPLO 1:
PRINT HASH %parametros
PARÁMETROS ANTES DE VACIAR LOS CAMPOS SELECCIONADOS:

0) KEY: HASH(0x20b9460) VALUE:

IMPRESIÓN DE LOS PARÁMETROS ASIGNADOS AL HASH, DESPUÉS DE SU DEFINICIÓN Y ASIGNARLE LOS CAMPOS SELECCIONADOS:
1) KEY: equipo VALUE:DESIO_SE
2) KEY: tipo_mantto VALUE:M
3) KEY: HASH(0x20b9460) VALUE:
4) KEY: subest VALUE:EDO
5) KEY: cve_atendio VALUE:SE
equipo = DESIO_SE tipo_mantto = M HASH(0x20b9460) = subest = EDO cve_atendio = SE

EJEMPLO 2:
PARÁMETROS ANTES DE LLENAR
0) KEY: HASH(0x2203460) VALUE:

PARÁMETROS DESPUÉS DE LLENAR EL HASH
1) KEY: equipo VALUE:DESIO_SE
2) KEY: subest VALUE:EDO
3) KEY: HASH(0x2203460) VALUE:
4) KEY: cve_atendio VALUE:SE
equipo = DESIO_SE subest = EDO HASH(0x2203460) = cve_atendio = SE

Al parecer el valor HASH(0x2203460) lo está generando cuando lo inicializo. ¿Cómo inicializo un HASH en vacío?

Gracias.

Re: Recepción de Parametros SELECT

NotaPublicado: 2020-07-23 13:56 @622
por explorer
Es muy extraño que un hash tenga como una de las claves un referencia a otro hash. Suena a error.

Para inicializar un hash en vacío, se hace así:

Con nombre:

my %hash;

Sin nombre:

my $hash_ref = {};

Hay más formas, pero estas son las tradicionales.

Re: Recepción de Parametros SELECT

NotaPublicado: 2020-07-23 14:38 @651
por seafree
Gracias, explorer, gusto en saludarte, lo resolví de la siguiente manera:

for (keys %parametros) {
delete $parametros{$_};
}

Re: Recepción de Parametros SELECT

NotaPublicado: 2020-07-23 15:48 @700
por explorer
Creí que inicializar se refería a empezar, no ha empezar de nuevo. Lo siento.

Lo que has escrito es la forma laaaaaarga de hacer esto otro:

delete @parametros{keys %parametros};

pero lo recomendado es esto:

undef %parametros;

Re: Recepción de Parametros SELECT

NotaPublicado: 2020-08-03 08:57 @414
por seafree
Perfecto, explorer, gracias.