perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 23
Click for quality!




11.02.2012 / 08:09

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragVergleiche - Suche - Ersetze aus 2 Dateien
Seitenanfang
Hallo,

habe erst mit Perl angefangen und bin nun etwas ratlos was mein Script betrifft.

Hintergrund: Es gibt 2 Dateien - Die 1. Datei bildet die Quelldatei in der nach einem String gesucht und diesen dann ersetzen soll. Dieser String steht irgendwo an beliebigen Stellen in der Datei.
Die 2. Datei behinhaltet alle Datensätze in Form von alterdatensatz=neuerdatensatz

Die Daten Alt - Neu werden mit einem '=' und die Datensätze mit Zeilenumbruch getrennt.

Im Prinzip soll das Script den Datensatz Zeilensweise aus der Datei2 lesen, diesen in "Neu" und "Alt" aufteilen (was auch funktioniert) und dann in der ganzen Datei1 nach "ALT" suchen und durch "NEU" ersetzen und dann den nächsten Datensatz raußlesen, suchen & ersetzen usw. bis das Ende der Datei1 erreicht ist.

Problem: Wenn ich die Befehle


$_ =~ s/$alt/$neu/gc;
push(@datei1, $_);

in die foreach-Schleife mitreinhänge, liest das Script zwar einige Datensätze ein, bleibt aber irgendwann stecken.

Wenn die Befehle ausßerhalb der foreach-Schleife sind, ersetzt es eben nur den letzten Datensatz der eingelesen wurde in der ganzen Datei.

Ich brauche aber eine Möglichkeit um "ALT1" in der kompletten Datei1 zu suchen und ersetzen, dann "ALT2" in der ganzen Datei1 suchen und ersetzen usw...

Und ohne 2 verschachtelte Schleifen und das die Befehle in der foreach-Schleife stehen, wüsste ich nicht wie vorgehen.

Hat jemand einen Verbesserungs bzw. Lösungsvorschlag?


$datei1="test.dump";
open(SQL_Dump, "<$datei1") || die "Fehler beim Lesen $!";

$datei2 ="crypt.txt";

while (<SQL_Dump>)
{

open(CRYPT, "<$datei2") || die "Fehler beim Lesen $!";
@line = <CRYPT>;
close(CRYPT);

foreach $datensatz (@line)
{
chomp($datensatz);
($alt,$neu)=split(/=/,$datensatz);
print "ALT: $alt\n";
print "NEU: $neu\n";

$_ =~ s/$alt/$neu/gc;
push(@datei1, $_);

}

}

close SQL_Dump;
open(SQL_Dump, ">$datei1") || die "Fehler beim Lesen $!";
print SQL_Dump @datei1;
close SQL_Dump;


Datum: 24.03.2006-10:48

Beitragre: Vergleiche - Suche - Ersetze aus 2 Dateien
Seitenanfang
habe mein Problem doch noch selber gelöst bekommen.

Trotzdem Danke.

Werde jetzt öfters hier reinschauen ;)

Datum: 24.03.2006-13:00

-






-
-