• Publicidad

¿Cómo saber si una variable dada $var es un hash?

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

¿Cómo saber si una variable dada $var es un hash?

Notapor fgalves » 2006-10-11 02:22 @140

Hola a todos.

¿Existe algún método para averiguar si mi variable $var en realidad contiene un hash en su interior?
Algo como:
Código: Seleccionar todo
if hash($var)....

Muchas gracias
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor explorer » 2006-10-11 04:15 @219

Sí, usando la función ref:
Código: Seleccionar todo
explorer@casa:~> perl -le '$x = { casa => "Lola" }; print ref $x'
HASH
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fgalves » 2006-10-11 04:24 @225

Entonces supongo que es viable una verificación del tipo
Código: Seleccionar todo
if (ref $x == "HASH") .....

¡¡Muchas gracias de todos modos!!
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor explorer » 2006-10-11 04:26 @227

NOOO... En Perl se usa 'eq' para hacer comparación de cadenas de texto. El '==' está reservado sólo para comparar números.

Por favor, sigue el enlace que te he dado, a ref...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

¡¡¡Gracias!!!

Notapor fgalves » 2006-10-11 06:40 @319

¡¡¡Gracias!!!
Disculpa las molestias pues soy realmente novato en Perl.
Cordialmente,
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor fgalves » 2006-10-11 10:21 @473

Una pregunta más a añadir. Ahora ya sé que $var contiene una referencia a un HASH. ¿Cómo hacer para asignar $var a una variable de tipo hash (%hash en el ejemplo)? El código más abajo me da un error:
Código: Seleccionar todo
"Reference found where even-sized list expected at ... line ..."


Gracias de antemano

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 if (ref($value) eq "HASH")
{
    %hash = $value;
     ....
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor kidd » 2006-10-11 10:31 @480

Hola:

La variable que estás recibiendo realmente es una referencia a un hash, por lo que para poder asignarga debes de-referenciarla:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %hash = %{$value};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor fgalves » 2006-10-11 10:38 @485

¡¡¡Muchas gracias Kidd!!!
¡¡¡Gracias por vuestra ayuda y muchas felicidades por la pagina!!! ¡Realmente muy util para gente como yo!
Saludos!
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados