Liebe Community,hoffe, ihr könnt (und wollt) mir bei folgendem Problem helfen. Eigentlich erschien es mir so unglaublich einfach, jetzt hänge ich aber schon ne ganze Zeit dran und werde einfach nicht mehr schlau aus den Fehlern...
Zuerst einmal der Sinn: Ich möchte zwei Textdateien mit kurzen Einträgen zeilenweise vergleichen. Nur in Datei 1 vorkommende Zeilen werden in einer eigenen Datei gespeichert, ebenso nur in Datei 2 oder in beiden Dateien vorkommende Zeilen.
Wollte dann einfach die erste Datei öffnen und diese Zeile mit allen Zeilen der zweiten Datei vergleichen. Bei Gleichheit kommt es in die Datei hinter dem Handle BOTH, ansonsten in ONLY1. Danach neu laden und Datei 2 durchgehen und mit 1 vergleichen, bei Gleichheit einfach ignorieren, ansonsten in ONLY2. Mehrere gleiche Zeilen in einer Datei kommen übrigens nicht vor.
Ein Ausschnitt aus dem Code:
open FILE1, "< $srcFiles[0]";
while ($srcLine = <FILE1>) {
open FILE2, "< $srcFiles[1]";
while ($cmpLine = <FILE2>) {
if ($srcLine eq $cmpLine) {
print "Found in both files: $srcLine \n";
print BOTH "$srcLine\n";
}
else {
print "Only in file 1: $srcLine \n";
print ONLY1 "$srcLine\n";
}
}
close FILE2;
}
close FILE1;
Hab's auch mit nem Regex versucht, aber da ich mir nicht sicher war, ob ich eine Variable wieder im Regex verwenden darf, hab ich auf diese Variante umgestellt.
Das Ergebnis: In der Ausgabe (und in der Datei hinter ONLY1) erscheint die gleiche Zeile mehrfach, bevor die nächste Zeile durchgegangen wird. Und wie gesagt: Alles nur in der Art, als würden die Zeilen nur in Datei 1 vorkommen. Allein die erste Zeile ist aber in beiden Dateien schon gleich...
Habe überhaupt keine Ahnung mehr, was ich da falsch gemacht habe... Hoffe also auf eure Hilfe! Danke im Voraus!
Datum: 10.08.2008-17:49
