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:
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
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my %datos = (
salon => "abc",
grupo => "cde",
);
my %animales = (
jorge => \%datos,
marco => \%datos,
);
use Data::Dumper;
print Dumper \%animales;
print $animales{jorge}{salon}, "\n";
$animales{jorge}{salon} = 'pingüino';
print $animales{marco}{salon}, "\n";
Coloreado en 0.002 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.