Hallo Leute,
ich habe ein wahrlich "grosses" Problem :-)
Ich habe 2 Textdateien, jeweils so um die 2 MB gross, die mir einen Zustand einer Datenbank anzeigen (Datenbak ist nicht direkt zugreifbar, sonst würde ich es machen).
Eine Datei ist von heute, die andere vom Vortag. Ich will nun diese beiden Dateien auf Änderungen bei den Objektattributen vergleichen und die veränderten Objektnamen in eine "Differenzdatei" ausgeben. Dabei geht es mir aber nur um die Objektnamen, nicht um die Attribute. Damit man es versteht, ein Beispiel:
prot.heute.txt:
[obj=111]
log=1
tag=9
[obj=222]
log=5
week=5
tag=8
[obj=333]
log=0
week="sense"
tag=2
... und so weiter. Die Datei vom Vortag prot.vortag.txt_
[obj=111]
log=0
tag=9
[obj=222]
log=5
week=5
tag=8
[obj=333]
log=0
week="nosense"
tag=2
...
Wie man hoffentlich jetzt am Beispiel sieht, sind die Attribute von obj=111 und obj=333 zumindest an einer Stelle unterschiedlich, also möchte ich diese beiden Objektnamen in der "Differenzdatei" haben. Also die Ausgabe sollte somit sein:
prot.diff.txt:
[obj=111]
[obj=333]
Wie kann ich so was am besten machen? Auch im Hinblick darauf, dass jede Textdatei 2 MB und mehr groß ist. Soll ich die zuerst zum Vergleich in ein Array (Hash?) einlesen, oder direkt beim Durchlaufen die Datei vergleichen? Performance ist dabei auch wichtig.
Ach ja, die Objekte sind sortiert, d.h. ich kann sicher sein, dass die Reihenfolge von [obj=...] immer gleich ist bei prot.heute.txt und prot.gestern.txt
Es gibt ca. 1000 verschiedene Attribute (also nicht erfassbar im Perl-Code)
Kann mir jemand vielleicht helfen? Ich verzweifel schon langsam...
Danke schon mal
Peter