%n = %a;En un contexto de lista, el valor de un hash es la lista formada por sus pares clave-valor:
%a = ( 'x', 5, 'y', 3); @b = %a;
Esta última asignación se llama desenrollar (unwinding) el hash.
Por supuesto, aunque los pares clave-valor aparecen seguidos, el orden en que figuran en el array es el orden en el que internamente Perl accede al hash:
DB<1> %a = (one=>1, two=>2, three=>3) DB<2> @b = %a DB<3> p "@b\n" one 1 three 3 two 2
Lo mas común es transformar el hash inicial de alguna forma:
%r = reverse %h;
En el hash r
las claves de h
son los valores y viceversa.
Si los valores de h
no fueran únicos,
en r
``triunfaría'' como clave algun valor de h
, si bien
cuál, depende de la implementación particular que la versión de Perl haga
del hash.
Asignar un número impar de elementos a un hash da lugar a un mensaje de advertencia.