• Publicidad

Tamaño de 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.

Tamaño de un hash

Notapor elnico » 2008-10-02 19:38 @859

Hola a todos.
Estoy migrando un programita hecho en PHP a Perl y me encontré con una línea que dice esto:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. if(count($data['options'])) 


Donde $data es un hash que contiene otro hash llamado "options".

Mi pregunta es cómo debería hacer en Perl para obtener la cantidad de elementos que tiene el hash options sin hacer un foreach (en caso de que sea posible).

Saludos y muchas gracias
elnico
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2007-09-09 14:44 @656

Publicidad

Notapor explorer » 2008-10-03 02:55 @163

Pues... por ejemplo... sacando el número de claves que tiene:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
perl -le '%options=(a=>1,b=>3); print scalar keys %options'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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 Jenda » 2008-10-03 17:52 @786

En este caso no te importa el tamaño sino sólo si hay algo en el hash. Así que

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( %{$data{options}}) {
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


basta. Como explorer escribe, si de verdad quieres saber el número de claves, tienes que evaluar la función keys() en un contexto escalar. Normalmente no tienes que especificar el contexto así.

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


Jenda
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor elnico » 2008-10-03 22:03 @960

Gracias por contestar, jenda y explorer.
Me funcionó perfecto con if ( %{$data{options}}) {
Saludos.
elnico
Perlero nuevo
Perlero nuevo
 
Mensajes: 69
Registrado: 2007-09-09 14:44 @656


Volver a Básico

¿Quién está conectado?

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