Me gustaría restablecer por completo mi %hash
para que no contenga claves ni valores. Prefiero usar un delineador que tener que usar un bucle.¿Cómo puedo restablecer un hash por completo sin usar un bucle for?
Hasta aquí he intentado:
%hash = 0;
%hash = undef;
Pero éstas tanto generan errores en modo estricto con las advertencias está activado, por lo que escribió un simple bucle for para lograr lo mismo:
for (keys %hash) {
delete $hash{$_};
}
Este funciona, pero realmente me gustaría hacer esto con una sola línea. ¿Hay alguna manera de simplemente restablecer un hash que estoy pasando por alto?
Estoy sorprendido de que nadie tiene sin respuesta la pregunta ya. AFAICR Nunca tuve la necesidad de reiniciar un hash porque con Perl uno puede tener alcances muy ajustados. En cambio, dejo que las variables simplemente se salgan del alcance; si está en un bucle, se crearía un nuevo léxico con 'my' cerca de la parte superior. - Creo que este es un problema XY con espacio para la mejora algorítmica, tal vez dar un poco más de contexto? – daxim
El hash es un global que creo cerca del comienzo de mi programa después de todos los controles y equilibrios. Se modifica con diferentes subrutinas hasta que asigno la versión final en una matriz. Dado este flujo, a menos que me falta algo, creo que es más fácil para mí 'reiniciar' este hash en particular después de asignarlo a la matriz de lo que es recrearlo con una declaración 'my'. (Es posible que esté pasando por alto un problema XY ya que no sabía cómo hacer algo como reiniciar un hash) – Structure