explorer escribiste:Using perl Syntax Highlighting
$hash{ $_ } = "valor" foreach keys %hash;
# o
map { $hash{ $_ } = "valor" } keys %hash;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Tu primer caso es el más correcto. ¿Por qué el segundo no? Bueno, ya que andas leyendo a Damian Conway, por allí podrás leer que debe evitarse las funciones de alto orden en
void context ( contexto vacío ), no siempre son mas rápidas que un for/foreach.
Otro punto importante aparte del mal uso de map{}, es que se ve claro que estás generando dos listas: la que retorna keys(), y la que está devolviendo map{}.
Si realmente lo quieres hacer de manera "correcta" con map{}, lo que tendrías que hacer es iterar sobre todos los miembros del
hash ( incluyendo valores ) y solo reemplazar la parte de los valores para que la lista que retorna map{} sea asignada de nuevo a %hash.
%hash = map { $hash{$_} ? $_ : "foo" } %hash;Saludos,