La posibilidad de hacer tablas de arreglos y arreglos de tablas es muy útil en ocasiones,
puesto que nos permite combinar las funciones de Perl sobre arreglos, como
push
,
con la facilidad de de uso de las tablas asociativas. La única complicación es que
al crear una estructura de datos como esta debemos tener en cuenta sus anidamientos
para manipularla, utilizando funciones como
keys
o
values
para las subtablas y
sort
o
foreach
para los subarreglos:
my @PDBcoordenadas = ( # una tabla para cada residuo de un fichero PDB { 'N' => 'ATOM 888 N MET P 0 13.559 11.810 -20.485', 'CA' => 'ATOM 889 CA MET P 0 12.699 10.612 -20.293', 'C' => 'ATOM 890 C MET P 0 12.893 10.012 -18.905', 'O' => 'ATOM 891 O MET P 0 11.938 9.870 -18.140' }, ... ); # recorrer @PDBcoordenadas foreach $residuo (@PDBcoordenadas) { # cada valor de $residuo es una referencia a una tabla asociativa print $residue->{'CA'}; } my %codones = ( # un arreglo para los codones de cada aminoacido 'F' => ['TTT','TTC'], 'L' => ['TTA','TTG','CTT','CTC','CTA','CTG'], 'S' => ['TCT','TCC','TCA','TCG','AGT','AGC'], 'Y' => ['TAT','TAC'], ... # $codones{'L'} es una referencia a un arreglo ); # que recorreriamos: foreach my $amino (keys(%codones)) # recorre llave a llave { print "$amino "; foreach my $codon ( @{ $codones{$amino} } ) # recorre los codones asociados a una llave { print "$codon,"; } print "\n"; }
Bruno Contreras-Moreira