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);