Das ist eine ziemlich blauäugige Methode, die bei gleichzeitigen Zugriffen in die Hose gehen muß.
Besser ist es, die Datei zum gleichzeitigen Lese- und Schreibzugriff zu öffnen und Filelocking einzusetzen.
Ein alternativer Ansatz (ebenfalls mit rudimentärer Synchronisation):
1. Datei $file umbenennen nach $file.alt
2. Datei $file.neu zum Schreiben öffnen
3. die neuen Zeilen dorthin ausgeben
4. $file.$alt lesen und dorthin ausgeben
5. $file.neu nach $file umbenennen
Umbenennen sollten normalerweise nicht zwei Prozesse gleichzeitig *erfolgreich* dürfen (Returncode abfragen; Fehlerbehandlung: sleep()-Schleife).