Diciamo che definiamo un hash anonimo come questo:Come cancellare un hash Perl
my $hash = {};
e quindi utilizzare l'hash dopo. Quindi è il momento di svuotare o cancellare l'hash per il riutilizzo di . Dopo alcune ricerche di Google, ho trovato:
%{$hash} =()
e:
undef %{$hash}
Entrambi saranno servire i miei bisogni. Qual è la differenza tra i due? Sono entrambi modi identici per svuotare un hash?
Sono quasi identici. dopo undef, definito restituirà false, dopo =(), definito è ancora vero. – rurban
Penso che l'obiezione di Rurban a questa risposta sia piuttosto importante. Forse Ether potrebbe aggiornare la sua risposta per menzionare questa differenza? – antred
L'uso del definito (% hash) è deprecato e non dovrebbe essere utilizzato. Quindi l'obiezione di Rurban potrebbe alla fine essere discutibile. Dai documenti perl per "definiti": "L'uso di definiti su aggregati (hash e matrici) è deprecato, utilizzato per segnalare se la memoria per quell'aggregato è mai stata allocata. Questo comportamento potrebbe scomparire nelle versioni future di Perl." – PhilHarvey