Combinaciones de arreglos y tablas

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
http://www.eead.csic.es/compbio