Funciones sobre tablas asociativas

keys
Devuelve un arreglo con las llaves de la tabla asociativa pasada como parámetro. Es muy útil para realizar bucles iterativos sobre tablas.

my $codon;
my %codones = ('GCC'=>'Ala','GCG'=>'Ala','ATG'=>'Met');
my @llaves = keys(%codones);

foreach $codon (@llaves)
{
	print "$codon $codones{ $codon } \n";
}

foreach $codon (sort (@llaves))   # itera sobre las llaves ordenadas alfabéticamente
{
	print "$codon $codones{ $codon } \n";
}

values
Devuelve un arreglo con los valores de la tabla asociativa pasada como parámetro.

my $codon;
my %codones = ('GCC'=>'Ala','ATG'=>'Met');
my @valores = values(%codones);               # contiene 'Ala' y 'Met'

Aprovecho aquí para mostraros cómo se pueden ordenar las tablas asociativas por valor. Como es lógico, la solución pasa por ordenar las llaves por sus valores asociados:

my @llaves_ordenadas = sort {$hash{$a} <=> $hash{$b}} ( keys(%hash) );

Bruno Contreras-Moreira
http://www.eead.csic.es/compbio