#!/usr/bin/perl
$tot=""; #per generare il nuovo file
open (FL,"miofile.txt");
while (<FL> ) #leggo riga per riga
{
print "riga letta: $_\n";
if ($_ =~ /nachname:Vegliante/) #ovvero se la riga contiene la parola prova
{$_ =~ s/nachname:Vegliante/nachname:Becker/g} #ovvero sostituisci la parola prova con la nuova parola
print "riga modificata: $_\n";
$tot="$tot$_"; #rigenero il file con la riga modificata
}
close (FL);
print "\n\n file corretto:\n$tot";
open (FL,">miofile.txt"); #se non voglio sovrascrivere il file basta cambiare il nome
print FL $tot;
close (FL);
Compilato:
riga letta: vorname: Mario
riga modificata: vorname: Mario
riga letta: nachname : Vegliante
riga modificata: nachname : Vegliante
riga letta: geburtsdatum: 26-09-1965
riga modificata: geburtsdatum: 26-09-1965
riga letta: geburtsort: Solopaca
riga modificata: geburtsort: Solopaca
riga letta: Strasse: Anton-Oncken-Str. 5
riga modificata: Strasse: Anton-Oncken-Str. 5
riga letta: PLZ: 26409
riga modificata: PLZ: 26409
riga letta: Stadt: Wittmund
riga modificata: Stadt: Wittmund
file corretto:
vorname: Mario
nachname : Vegliante
geburtsdatum: 26-09-1965
geburtsort: Solopaca
Strasse: Anton-Oncken-Str. 5
PLZ: 26409
Stadt: Wittmund
Ho trovato l´errore, nel leggere la riga si ferma a nachname: e non va piú avanti perché ha trovato la prima parola uguale, scrivendo solo il cognome lo trova e lo modifica.
Grazie mille ma purtroppo non ho finito.
Devo inserire il tutto in dei tag, prima una funzione di ricerca e poi una di attualizzazione.![]()