Counter-Problem

Hallo!
Meine Homepage wird komplett aus einem Perl-Script erzeugt, dass die Daten aus externen Dateien ausliest. Ich habe in dem Script einen Counter eingebaut, der folgendermaßen aussieht:

 open(FILE,";
 flock(FILE, $LOCK\_UN);
 close(FILE);
 $count=int($counter[0])+1;
 open(FILE,"\>counter");
 flock(FILE, $LOCK\_EX);
 print FILE $count;
 flock(FILE, $LOCK\_UN);
 close(FILE);

In unregelmäßigen Abständen wird der Counterstand jedoch wieder auf 0 gesetzt (und dann natürlich auf 1 hochgezählt). Ich weiß leider nicht, mit welchem Browser dies auftritt, da ich es immer nur zwischendurch in meiner LOG-Datei sehe.
Hat jemand eine Idee, wie ich dieses Problem beheben kann?
Gruß
Dennis

open(FILE,";
flock(FILE, $LOCK_UN);

Ab hier kann Dir jemand dazwischenfunken

close(FILE);
$count=int($counter[0])+1;
open(FILE,">counter");
flock(FILE, $LOCK_EX);
print FILE $count;
flock(FILE, $LOCK_UN);

ab hier ebenfalls - Datei noch nicht ge-flushed (also Wert 0) und der nächste liest bereits

close(FILE);

besser (sonst funkt Dir zwischen Lesen der Datei und Schreiben jemand dazwischen):

open(FILE,"+;
chomp $counter;
$count += 1;
seek(FILE, 0, 0);
truncate(FILE, 0);
print FILE $count;
#unnötig flock(FILE, $LOCK\_UN);
close(FILE);

Klaus