|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Datei am Anfang löschen, während gleichzeitig geschrieben wird
|
Seitenanfang |
| Hallo Welche Möglichkeit gibt es, die Dateigrösse durch löschen der Anfangszeilen zu reduzieren, während gleichzeitig in die Datei geschrieben wird ? Danke Charly
Datum: 20.02.2007-15:21

|
re: Datei am Anfang löschen, während gleichzeitig geschrieben wird
|
Seitenanfang |
| hi, nachdem die Datei auf ein Array gelesen wurde, kannst Du mit shift() die erste Zeile rausziehen und mit unshift() eine neue Zeile vorne anfügen. Hinten anfügen geht mit push() und hinten herausnehmen geht mit pop(). Hinweis: Die Datei für alle anderen Prozesse sperren, solange Dein Script darauf zugreift. roro
Datum: 20.02.2007-16:36

|
re: Datei am Anfang löschen, während gleichzeitig geschrieben wir
|
Seitenanfang |
| Hallo Danke für den Hinweis Problem ist damit gelöst, habe die Datei mit flock gesperrt: use Fcntl qw(SEEK_SET LOCK_EX LOCK_UN); . . open FH, "+<$LOGFILE" or die "Kann $LOGFILE nicht öffnen, weil:$!"; flock(FH, LOCK_EX) or die "Fehler beim sperren der Datei $LOGFILE: $!"; . . Dateizeilenanzahl ermittelt: $WC = "wc -l $LOGFILE" ; @ZEILENANZAHL = `$WC`; . Dateiinhalt in Array, Array dann mit shift auf die gewünschte Zeilenanzahl bringen, Datei auf 0 Inhalt reduzieren: truncate FH, 0 or die $!; Datei wieder mit reduziertem Arrayinhalt auffüllen: foreach (@ARRLOGFILE) { print FH "$_"; } ...nur mit truncate, ohne Dummyarray, ist's mir nicht gelungen, die Zeilen vom Anfang bis zu einem Punkt der Datei zu entfernen, wobei die Datei esperrt ist.
Datum: 21.02.2007-15:31

|
|

|

|

|
 |

|

|
|