• Publicidad

Hash de arreglo de hashes

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Hash de arreglo de hashes

Notapor MARIESNYDER » 2006-07-22 22:54 @996

Hola, espero que me puedan ayudar

Tengo una variable referenciada "$all_details" que es un hash de arreglos de hashes, al hacer un print Dumper obtengo
lo que aparece mas abajo.. ("Se ve mas claro al ver el codigo fuente del Dumper")

Como puedo recorrer esto, de tal forma de ir obteniendo los valores finales ?
un dato.. es que tengo un arreglo con todos los indices, en este caso:

Código: Seleccionar todo
foreach $code (keys %{$codes}) {

---  Aqui $code va obteniendo los valores (NGEGESZSEG y NGVAROS)

}
----------------------------------------
print Dumper $all_details;
----------------------------------------

$VAR1 = {
          'NGEGESZSEG' => [
                            {
                              'CODENAME' => 'id-alfa-1',
                              'VISITS' => '3',
                              'USERNAME' => 'Alfa',
                              'ID' => 'NGEGESZSEG'
                            },
                            {
                              'CODENAME' => 'id-beta-2',
                              'VISITS' => '3',
                              'USERNAME' => 'Beta',
                              'ID' => 'NGEGESZSEG'
                            }
                          ],
          'NGVAROS' => [
                         {
                           'CODENAME' => 'id-gril-1',
                           'VISITS' => '3',
                           'USERNAME' => 'Gril',
                           'ID' => 'NGVAROS'
                         },
                         {
                           'CODENAME' => 'id-pred-3',
                           'VISITS' => '1',
                           'USERNAME' => 'Pred',
                           'ID' => 'NGVAROS'
                         }
                       ]
        };



Espero que me puedan ayudar.. muchas gracias .. ;)
MARIESNYDER
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2006-07-22 22:39 @985
Ubicación: ggg

Publicidad

Notapor explorer » 2006-07-23 07:20 @347

Para recorrer de forma programa una estructura, hay que utilizar bucles o cualquier otra instrucción repetitiva.
Código: Seleccionar todo
#!/usr/bin/perl -l

$all_details = {
          'NGEGESZSEG' => [
                            {
                              'CODENAME' => 'id-alfa-1',
                              'VISITS' => '3',
                              'USERNAME' => 'Alfa',
                              'ID' => 'NGEGESZSEG'
                            },
                            {
                              'CODENAME' => 'id-beta-2',
                              'VISITS' => '3',
                              'USERNAME' => 'Beta',
                              'ID' => 'NGEGESZSEG'
                            }
                          ],
          'NGVAROS' => [
                            {
                           'CODENAME' => 'id-gril-1',
                           'VISITS' => '3',
                           'USERNAME' => 'Gril',
                           'ID' => 'NGVAROS'
                            },
                            {
                           'CODENAME' => 'id-pred-3',
                           'VISITS' => '1',
                           'USERNAME' => 'Pred',
                           'ID' => 'NGVAROS'
                            }
                       ]
};

foreach $code ( keys %{$all_details} ) {
    print $code;

    foreach $hash ( @{ $all_details->{$code} } ) {

        foreach $clave ( keys %{$hash} ) {
            print "\t$clave\t", $hash->{$clave};
        }
    }
}

# Acceso a un elemento en concreto:
print $all_details->{NGVAROS}->[1]->{USERNAME}; # Pred
print $all_details->{NGVAROS}[0]{CODENAME};     # id-gril-1
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor MARIESNYDER » 2006-07-23 17:23 @765

Muchisimas gracias .. explorer...

Me quedo mucho mas claro..... y obtuve lo que queria

Marie..--
MARIESNYDER
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2006-07-22 22:39 @985
Ubicación: ggg


Volver a Intermedio

¿Quién está conectado?

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

cron