• Publicidad

Problemas con hash en Perl

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

Problemas con hash en Perl

Notapor edgar_edgar » 2009-08-12 15:08 @672

Hola amigos, tengo una bronca al querer inicializar un hash.
Lo que pasa es que quiero meter un hash dentro de otro hash; por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %datos (salon, "abc", grupo, "cde");
  2. my %animales (jorge, %datos, marco, %datos);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


y que desde el hash animales pudiese leer el valor de la llave jorge que sería %datos, más, aparte, el valor de la llave salón que sería abc.

Mi problema es que quiero leer el valor de la llave de un hash que está metido en otros hash.

Espero me pudieran responder porque llevo mucho con este problema :? :?
Última edición por explorer el 2009-08-12 16:45 @740, editado 1 vez en total
Razón: Ortografía
edgar_edgar
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2009-08-12 14:53 @662

Publicidad

Re: Problemas con Hash en Perl

Notapor netsoul » 2009-08-12 16:05 @711

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. my %datos = (salon => "abc", grupo => "cde");
  7.  
  8. my %animales = (jorge => \%datos, marco => \%datos);
  9.  
  10.  
  11. print "$animales{jorge}{salon}\n"; # abc
  12.  
  13. print "$animales{marco}{grupo}\n"; # cde
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Yo usé referencias, pero hay muchas formas de hacerlo.
;)
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Re: Problemas con hash en Perl

Notapor explorer » 2009-08-12 16:59 @749

Bienvenido a los foros de Perl en Español, edgar_edgar.

La creación de estructuras de datos en Perl es muy parecida a como se hace en otros lenguajes en los que se emplean punteros o referencias, como C o Pascal.

La forma de obtener la referencia de una variable es con el operador '\' delante del nombre de la variable.

Así, puedes construir aplicaciones complejas a base de construcciones sencillas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %datos = (
    salon  => "abc",
    grupo  => "cde",
);

my %animales = (
    jorge  => \%datos,
    marco  => \%datos,
);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora bien, hay que tener el mismo cuidado que en otros lenguajes: si ponemos las mismas referencias a las mismas estructuras de datos, podemos cambiar los contenidos inadvertidamente. Por ejemplo, si hacemos
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. my %datos = (
  7.     salon  => "abc",
  8.     grupo  => "cde",
  9. );
  10.  
  11. my %animales = (
  12.     jorge  => \%datos,
  13.     marco  => \%datos,
  14. );
  15.  
  16. use Data::Dumper;
  17. print Dumper \%animales;
  18.  
  19. print $animales{jorge}{salon}, "\n";
  20.  
  21. $animales{jorge}{salon} = 'pingüino';
  22.  
  23. print $animales{marco}{salon}, "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En este ejemplo, ponemos a un 'pingüino' en el salón de Jorge, pero... de repente aparece otro pingüino en el salón de Marco (en realidad, es el mismo pingüino porque está en el mismo salón). Es debido a que los dos amigos comparten los mismos %datos.

Más información en perldsc - Perl Data Structures Cookbook.

Recuerda, también, que Data::Dumper es tu amigo.
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

Re: Problemas con hash en Perl

Notapor edgar_edgar » 2009-08-14 18:08 @797

Gracias por sus respuestas, fue de excelente ayuda y logré resolver mi problema.
Sobre todo el tip del \%animales. Solo puedo decir gracias por su ayuda.
edgar_edgar
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2009-08-12 14:53 @662

Re: Problemas con hash en Perl

Notapor bl4ckc00k1e » 2009-08-15 07:21 @348

Me quedo con esta estructura, parece mucho más ordenada y desconocía que se pudiese hacer así.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my %datos = (
    salon  => "abc",
    grupo  => "cde",
);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero no entiendo por qué has cargado diagnostics.
Imagen
Avatar de Usuario
bl4ckc00k1e
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2009-08-14 21:56 @956

Re: Problemas con hash en Perl

Notapor explorer » 2009-08-15 09:58 @457

diagnostics sirve para muchas cosas. La más básica, para que Perl te dé más información a la hora de producirse avisos o errores.
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron