Hallo Thorsten,
ich möchte aus einer Log-Datei per perl-script Zeilen löschen, die einen bestimmten Begriff enthalten.
Direkt die Zeilen zu löschen, ist glaube ich etwas arg umständlich ;-) Es gibt aber mehrere möglichkeiten das denoch durchzuführen:
- Alles auf einen Rutsch in ein Array einlesen, und dann das Array wieder auf die Datei zurückschreiben, und die nicht gewünschten Zeilen (Arrayelemente) einfach weglassen/überspringen.
- Die Datei öffnen, und nur die gewünschten Zeilen in ein Array lesen, welches anschließend wieder in die Datei geschrieben wird.
Bei Beiden Varianten musst Du entweder die Datei zum Lesen öffnen/schliesen und anschließend wieder zum Überschreiben öffnen/schließen, oder die Datei zum Lesen und Schreiben öffenen, den Inhalt nach dem Einlesen löschen, und anschließend die gefilterte Version reinschreiben.
Die letzte Version ist sicherlich vorzuziehen, da hier zusammen mit Filelocking wohl am ehesten gewährleistet ist, daß Dein Logger nicht versucht, zwischen Lesen und Schreiben des Filters einen Eintrag zu setzen.
Für die Durchführung benötigst Du open(), flock(), while, <HANDLE>, print()/push(), unless, m/PATTERN/, close() in der richtigen Reihenfolge ;-))
Gruß AlexBausW