Tengo un problema donde los pares de números se asignan a otros pares de números. Por ejemplo, (1,2) -> (12,97). Algunos pares pueden mapear a otros pares múltiples, entonces lo que realmente necesito es la capacidad de mapear un par en una lista de listas, como (1,2) -> ((12,97), (4,1)). Al final del día, quiero procesar cada uno de los valores (es decir, cada lista de listas) por separado.Hash de Perl cuando las claves y los valores son referencias de matriz
En Python, que podía hacer esto simplemente diciendo:
key = (x, y)
val = [ a, b ]
if (x,y) not in my_dict:
my_dict[ (x,y) ] = []
my_dict[ (x,y) ].append([a,b])
Sin embargo, en Perl, tengo que usar árbitros para las claves y valores. Así que puedo decir:
$keyref = [ x1, y1 ]
$valref = [ a, b ]
%my_hash = { $keyref => $valref }
Pero, ¿qué ocurre cuando aparece otro par (x2, y2)? Incluso si x2 == x1 y y2 == y1, $ keyref = [x2, y2] diferirán del keyref anterior generado, por lo que no veo una forma de hacer la búsqueda. Por supuesto, podría comparar (x2, y2) con cada clave hash desreferenciada, pero después de todo, Dios nos dio tablas hash precisamente para evitar la necesidad de hacerlo.
¿Existe una solución de Perl?
Gracias,
-W.
No puede usar una referencia como clave. (al menos no sin usar un * hash * atado) –