Digamos que definimos un hash anónimo como esto:Cómo borrar un hash de Perl
my $hash = {};
y luego usar el hash después. Entonces es hora de vaciar o borrar el hash para reutilizar . Después de algunas búsquedas Google, encontré:
%{$hash} =()
y:
undef %{$hash}
Ambos servir a mis necesidades. ¿Cuál es la diferencia entre los dos? ¿Son ambas formas idénticas de vaciar un hash?
Son casi idénticos. después de undef, defined devolverá false, after =(), defined sigue siendo verdadero. – rurban
Creo que la objeción de Rurban a esta respuesta es bastante importante. ¿Tal vez Ether podría actualizar su respuesta para mencionar esa diferencia? – antred
El uso definido (% hash) está en desuso y no debe utilizarse. Entonces la objeción de rurban puede eventualmente ser discutible. De los documentos de Perl para "definido": "El uso de los definidos en los agregados (hashes y matrices) está obsoleto. Solía informar si la memoria para ese agregado se había asignado alguna vez. Este comportamiento puede desaparecer en las versiones futuras de Perl". – PhilHarvey