Hi!
Auf genau diese Verfahren wollte ich auch hinaus, nur mit SELFdenken. Auch ich benutze es seit einiger Zeit problemlos, auch schon unter richtiger Last.
open(FILE, "+< clicks.txt");
zum gleichzeitigen Lesen und schreiben, sperre sie mit flock(), lies sie wie gewoehnlich ein, schliesse sie NICHT, sondern setze mit
seek(FILE, 0, 0);
den Dateizeiger an den Anfang zurueck, schreibe alles was Du loswerden willst. Jetzt muss Du die Datei abschneiden, denn wenn der neue Inhalt kuerzer ist als der alte, bleibt das, was hinter dem jetzigen Dateizeiger war, auch weiterhin stehen. Also
truncate(FILE, tell(FILE)); # immer schoen perlfunc lesen ;-)
und jetzt endlich die Datei schliessen.
Oder :
[...]
seek (FILE,0,0);
truncate(FILE, 0);
print FILE, "stuff";
close FILE;
flock FILE, 2;
^ Wuerdest Du die LOCK_* Konstanten verwenden (mit use Fcntl ':flock'; importieren), wuesste man, was das bedeuted, ohne erst in der Referenz nachzuschauen.
das beruhigt - ich musste auch erstmal nachlesen, sowas hat ja keiner in Kopf - oder?
Gruß Frank