sub auth { my ($login, $password) = shift; my $stmt = q~SELECT Password FROM users WHERE Username = ?~; my $sth = $dbh->prepare( $stmt ) or die $dbh->errstr; $sth->execute( $login ) or die $dbh->errstr(); my ($password_check) = $sth->fetchrow_array; my $return = 0; if( $password_check ){ $return = $password eq $password_check ? 1 : 2; } return $return } my %map = ( 0 => \&createuser, # 0 => Userexistiert noch gar nicht 1 => \&everything_is_fine, # 1 => Login hat geklappt 2 => \&wrong_login, # 2 => Passwort war falsch eingegeben ); # versuche einzuloggen my $retval = auth( $login, $password ); # wenn es fuer den Rueckgabewert einen Eintrag gibt fuehre die entsprechende Funktion aus if( exists $map{$retval} ){ $map{$retval}->(); } else{ die "irgendwas ganz komisches ist passiert" }