Il perldocs dire quanto segue a proposito last
:Perl: Perché "last" non può essere utilizzato per uscire da grep o map?
last
non può essere utilizzato per uscire da un blocco che restituisce un valore comeeval {}
,sub {}
odo {}
, e non dovrebbe essere utilizzato per uscire da un grep() o una mappa() operazione.
Perché dovrebbe essere evitato in un grep() omappa()? Sono particolarmente curioso della mappa poiché è un'alternativa al costrutto foreach. I dottori sembrano insistere nel non fare qualcosa senza descrivere le conseguenze.
mappa trasforma un elenco in un altro elenco, quindi ogni richiamo mappa dovrebbe restituire un elemento – perreal
Ottengo l'errore 'Can not" last "al di fuori di un blocco di loop' cercando di uscire' map' con 'last' utilizzando perl v5. 14.1 in WinXP. – TLP
@TLP: E questo è stato il caso almeno dal Perl v5.10.1. Sto indovinando che questo linguaggio "non dovrebbe" è un residuo di una versione precedente di Perl quando deve aver causato un comportamento strano. – ruakh