Ho appena dato un frammento di codice:Che cos'è "% _" in perl?
@list = grep { !$_{$_}++ } @list;
quanto un idioma per la deduplicazione. Sembra funzionare, ma - non c'è %_
elencato in perlvar
.
avrei normalmente a scrivere quanto sopra dichiarando %seen
es .:
my %seen; my @list = grep { not $seen{$_}++ } @list;
Ma %_
sembra funzionare, anche se sembra essere portata globale. Qualcuno può indicarmi un riferimento per questo? (O almeno rassicurami che fare quanto sopra non sta distruggendo qualcosa di importante!)
Ecco alcune discussioni al riguardo: http://www.perlmonks.org/?node_id=11757 –
Intrigante. Quindi può essere semplice come un residuo del typeglob '_'? Mi chiedo se ci sia qualcosa di più recente di 15 anni fa. (Ma suppongo che se non è cambiato, non ci sarebbe alcuna ragione per questo). – Sobrique
Non che tu abbia bisogno di un 'local% _;' nel primo snippet per lo stesso motivo per cui hai "my% seen;" nel secondo. – ikegami