soweit so gut, aber
lese und schreibe irgendwas...
flock(DB_FH,8);
Ich vermute mal das soll das flock aufheben (du solltest die symbolischen Konstanten von Fnctl verwenden) und das darf man nie machen!
Es kann gut sein, dass die Datei noch nicht auf die Festplatte geschrieben wurde und somit jetzt ungeflockt im Speicher liegt, d.h. ein neuer Prozess kann ungehindert auf ungeänderte Daten zugreifen und die Änderungen dieses Prozeß sind futsch.
undef $db;
untie %logins;
close(DB_FH);
close macht automatisch ein UNLOCK.
Struppi.