Moin.
Es gibt eine 2. Fehlerquelle:
Dein Perlprozeß ist unterbrechbar durch das Betriebssystem. Wird er nun zw.
if($uflock) { flock($fh,$fclose); }
und
close($fh);
durch einen anderen Prozess, der ebenfalls in Dein File schreibt, unterbrochen, geht das Ergebnis eines Prozesses verloren, das letzte close ($fh) "gewinnt". Laß flock($fh,$fclose) weg, es wird duch close implizit ausgeführt. Damit wird das File wirklich erst "geunlockt", wenn es auch geschrieben wurde.
Gruß Frank