Pattern Substitution

Guida a Perl
di M. Liverani

L'operazione di pattern substitution consente di cercare una certa sottostringa all'interno di una stringa (effettuando il pattern matching con una espressione regolare) e di sostituire a questa sottostringa un altro insieme di caratteri. L'operatore che consente di effettuare questa operazione ha la seguente sintassi:

s/pattern di ricerca/pattern di sostituzione/

La sostituzione del primo pattern con il secondo viene effettuata una sola volta (sulla prima occorrenza del primo pattern) a meno che dopo il terzo slash non si aggiunga il carattere "g" (globally) che indica di ripetere la sostituzione su tutte le occorrenze del pattern di ricerca e non solo sulla prima.

Modifichiamo l'esempio precedente per produrre un semplice programmino che cerca una certa stringa all'interno di un file di input e genera un file di output in cui ogni occorrenza della stringa stata sostituita da una seconda stringa inserita dall'utente.

#!/usr/local/bin/perl
print "Nome del file di input: ";
$file = <STDIN>;
chop($file);
-e $file || die "Il file non esiste!\n\n";
-T $file || die "Il file non e' un file di testo!\n\n";
print "Stringa da cercare: ";
$stringa = <STDIN>;
chop($stringa);
print "Stringa da sostituire: ";
$sost = <STDIN>;
chop($sost);
open (IN, "< $file") || die "Impossibile aprire $file.\n\n";
open (OUT, "> $file.new") || die "Impossibile creare $file.new\n\n";
while ($r = <IN>) {
$r =~ s/$stringa/$sost/g;
print OUT $r;
}
close(IN);
close(OUT);


© Risorse.net (www.risorse.net)
pagina in versione stampabile:
http://www.risorse.net /perl/patternsub.asp?print=ok