ich habe jetzt auch den ganzen kram von »» open DBM, "+<&=$fd" ;
weg und es geht so auch wie Du sagtest also ohne open und close sowie ohne
dieses $fd = $db->fd;...
Das war das File locking, d.h. wenn du das als CGI skript laufen läßt kann es u.U. sein das mehere Prozesse gleichzeitig auf ein und dieselber Datei zugreifen und dann droht Daten verlust.
Aber!
Ich bin mir nicht sicher, aber ich glaube neuere Versionen von der Datenbank locken von alleine, wie schon erwähnt such mal danach.
ich benötige auch nicht das if(exist $logins{$username... mehr,da der eintrag automatisch erfolgt am schluss.
Das war als Beispiel gedacht, wenn du Wissen willst ob der User existiert. Du musst nämlich aufpassen, wenn du Wissen willst ob ein Eintrag existiert und du es so abfragst:
if( $hash{'name'} ) {.....}
Dann wird automatisch ein (undefinierten) Eintrag mit dem schlüssel 'name' gemacht, was nicht immer gewünscht ist.
D.h. nach der obigen abfrage ist
if(exists $hash{'name'}) => wahr
aber
if(defined $hash{'name'}) => unwahr
Ist halt nur so dass der server mekert mit dem schalter -w ,aber nur beim erstenmal danach nicht mehr.
Der Server meckert nicht, Perl meckert.
Dennoch es läuft so,auch mit use strict; den -w schalter hab ich nun auch draussen.
Die Hinweise vo -w solltest du beseitigen, da sie u.U. zu Effekten führen die nicht von dir gewünscht sind.
wenn du auf eine variabel zugreifen möchtest, soltest du diese vorbelegen oder mit if(defined $var) überprüfen ob sie definiert wurde und schon meckert Perl nicht mehr.
Struppi.