Hallo.
Wenn eine mit flock gesperrte Datei nochmal gesperrt werden soll, wartet der zweite Prozess solange, bis die Daatei entsperrt wurde (passiert mit entspr. flock-Aufruf, close oder Script-Ende).
Es gibt - glaube ich - auch einen non-blocking-Mode, mit dem flock dann false zurückliefert, was der Prozess dann entspr. behandeln sollte. (Wenn das nicht geschieht, wird ganz normal weitergemacht und die Datei könnte zerschrotet werden, trotz flock).
$result = open(TESTFILE, ">../html/count.txt");
dann verursachen müsste, daß in $result "0" drinsteht! Tut es aber nicht, sondern "1" und die Datei count.txt ist zum Schluss natürlich lehr.
Klar, das eigentliche Datei öffnen geht erst mal. Egal ob die Datei "geflockt" ist.
Das ist doch das Problem, daß die flock-stelle erst kommt, NACHDEM die Datei bereits geöffnet wurde! Uns sobald ich eine Datei zum schreiben öffne is der Inhalt bereits weg! Was ich bräuchte ist etwas, um VOR dem Öffnen einer Datei zu prüfen ob diese geflockt ist!
Das gibt es so in Perl leider nicht wirklich. Du könntest zwar spez. locking-Dateien anlegen (s. Archiv), aber das ist so eine Sache.
Am besten wäre wohl:
open (DATEI, "+<".$dateiname) die "Datei nicht geoeffnet! $!";
flock (DATEI, $modus);
seek (DATEI, 0,0);
Damit wird die Datei zum Lesen und Schreiben geöffnet, aber nicht neu angelegt.
(Script ungetestet, könnte auch "+>" sein)
fs