A continuación se muestra una generalización de un bloque de código que sigo teniendo que escribir cuando quiero construir un hash de matrices dentro de una especie de bucle.Taquigrafía para agregar nuevos valores a un hash de matrices
#get value and key that I want to use
my $value = getvalue();
my $key = getKey();
#add value to hash using key
if($hash_of_arrays{$key}){
push(@{$hash_of_arrays{$key}}, $value);
}
else{
$hash_of_arrays{$key} = [$value];
}
La sentencia if es muy tedioso de escribir para una tarea tan simple, pero hay que hacer, ya que empuja un valor cuando su llave no está definida en el hash causa problemas. Me pregunto si hay alguna abreviatura para escribir esto, una donde no tengo que escribir $hash_of_arrays{$key}
tres veces.
Bueno, ahora no estoy muy seguro de cómo me las arreglé para causar un error la última vez que lo intenté. Pensé que causaba un error de "no una referencia de ARRAY", pero eso no parece suceder con las variables no definidas. ¡Gracias! – MattLBeck
No ocurre para undefs, pero sucede si logras poner algo como una cadena en '$ HoA {$ key}' antes de intentar tratarlo como un arrayref :) – hobbs
Este método se llama autovida. Brian d Foy tiene un artículo sobre cómo desactivarlo: http://www.effectiveperlprogramming.com/blog/1256 – shawnhcorey