-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[28] Come si fa a modificare la N-esima occorrenza di qualcosa?

Dovete tenere il conto di N da soli. Ad esempio, diciamo che volete modificare la quinta occorrenza di "whoever" o "whomever" in "whosoever" o "whomsoever", senza preoccuparvi di lettere maiuscole o minuscole. Ogni esempio assume che $_ contenga la stringa da modificare.

    $conto = 0;
    s{((whom?)ever)}{
        ++$conto == 5		# e` la quinta occorrenza?
	? "${2}soever"		# si`, scambiala
	: $1 		 	# lasciala li`
    }ige;

Nel caso più generale, potete usare il modificatore /g in un ciclo while, tenendo il conto delle corrispondenze.

    $VOGLIO = 3;
    $conto = 0;
    $_ = "Pesce uno pesce due pesce rosso pesce blu";
    while (/\bpesce\s+(\w+)/gi) {
        if (++$conto == $VOGLIO) {
            print "Il terzo pesce e` $1.\n";
        }
    }

Che stampa: "Il terzo pesce e` rosso". Potete anche usare un contatore per le ripetizioni e poi ripetere il pattern, come qui:

    /(?:\s*pesce\s+\w+){2}\s+pesce\s+(\w+)/i;

vedi in inglese

AUTORE E COPYRIGHT

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.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
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!
D:
Annunci Google