Hallo,
open(DATENDATEI, "</db/daten.csv");
flock(DATENDATEI, LOCK_EX);
Das führt zwar zu keinerlei race conditions, aber warum willst Du ein exclusive lock auf eine Datei, die Du *ausschließlich* zum lesen geöffnet hast? Ein shared lock würde da doch vollkommen ausreichen.
Ansonsten: Siehe meinen Artikel, insbesondere auch den Abschnitt über häufige Fehler.
Viele Grüße,
Christian