[18] Perché utilizzare $&, $` o $' rallenta il mio programma?
$MATCH $& $POSTMATCH $' $PREMATCH $`
(contributo di Anno Siegel)
Quando Perl si accorge che vi occorre una di queste variabili, ovunque nel
vostro programma, le fornisce in ogni operazione di 'pattern matching'
[corrispondenza/ricerca di uno schema, NdT].
Questo significa che su ogni pattern match, l'intera stringa verrà
copiata, una parte di essa in $`, un'altra in $& e un'altra in $'.
Dunque la penalità è estremamente severa con stringhe lunghe e pattern di cui
si ha spesso un match. Se potete, evitate di usare $&, $' e $`, ma se non potete
evitarlo, una volta che le avete usate allora usatele quanto volete, perché ne avete
già pagato il prezzo. Tenete presente che alcuni algoritmi
apprezzano molto l'uso di queste variabili. A partire dalla versione 5.005,
la variabile $& non è così "costosa" quanto le altre due.
A partire dal Perl 5.6.1, le variabili speciali @- e @+ possono rimpiazzare come funzionalità
$`, $& e $'. Questi array contengono dei puntatori all'inizio e fine di ogni match (consultate perlvar
per l'intera faccenda), dunque vi danno essenzialmente la stessa informazione ma senza rischiare di
copiare troppe stringhe.
Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan
Torkington. Tutti i diritti riservati.
Questa documentazione è libera; puoi ridistribuirla e/o
modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di
codice in questo file sono rilasciati al pubblico dominio. Potete, e
siete incoraggiati a farlo, utilizzare il presente codice o qualunque
forma derivata da esso nei vostri programmi per divertimento o per profitto.
Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!