wie immer konfus ;-)
ja ich glaub auch dass es mit der variable my $crypted was zu tun hat
diese variable steht unterer dem if (check())...was möglicherweise zum fehler geführt hat.Das crypten sollte erst ausgeführt werden,wenn sicher ist,dass das password existiert.my $crypted sieht so aus:
my $crypted = crypt($password, "Md") if ($password !~ /^Md/);
Das ist schlecht, was ist, wenn die Bedignung nicht zutrifft?
Dann wird $crypted nie initialisiert.
Ich vermute mla du willst eher sowas machen:
my $crypted = $password =~ /^Md/ ?
crypt($password, "Md") :
$password;
Du verwendest globale Variabeln?
Das solltest du vermeiden, früher oder später kannst du verlierst du die Übersicht.
Es gibt in Perl durchaus die Möglichkeit Funktionen einen Parameter mit zugeben (in deinem Falle check($username, $password) z.b.)
Struppi.