Jein, das funktioniert vermutlich schon...
doch sollte oder will man dazu vielleicht noch wissen, warum:
use Fcntl ':flock';
open (FILE, "> $Datei"); # Datei wird geöffnet, ist aber noch nicht geschützt.
flock(FILE, LOCK_EX); # Jetzt wird sie geschützt (*). In der Zwischenzeit hätte ein anderer Prozess unbehelligt schreiben können.
print FILE $Data; # Nun schreibst nur Du.
close (FILE);
*) Wenn das noch nicht durch ein anderes Flock der Fall ist. Dann wird gewartet, bis die Datei wieder frei ist, und später geht es bei (*) weiter.
Weitere Probleme:
Manche W32-Betriebssysteme unterstützen kein Flock. Perl kann das unter Umständen emulieren (meint mein Halbwissen), jedoch gilt das nur für Perl. Andere nichtperlige Prozesse kriegen davon vermutlich nichts mit und können dann das Lock nicht respektieren.
Auf allen Betriebssystemen könnten Prozesse das Flock absichtlich ignorieren. Flock zu beachten ist freiwillig (und geschieht etwa mit obigem Code).
[quote=Free Faq,05.01.2004, 14:26]Wie kann ich das testen?[/quote]
Etwa mit mehreren Prozessen, die Du in kurzer Folge nacheinander beauftragst, immer wieder mal in die Datei zu schreiben, während die anderen noch laufen.