http://www.perlmonks.org?node_id=1003175


in reply to [SOLVED] Checking username and password but cant break whileloop!

I think you want the last function.

my $match = 0; # We haven't got a match yet. while ($lines = <PSWD>){ ($user,$pswd,$userID,$groupID,$info,$home,$shell) = split ':', $lin +es; if ($username eq $user) { print "Checking username... MATCH\n"; if ($passwd eq $pswd){ print "Checking password... MATCH\n"; } else { print "Password does not match!\n"; } $match = 1; # We have found a match last; # So stop looping already! } } unless ($match) { print "\"$username\" does not match any users in our database!\n"; }

Update: I have also moved that else outside of the loop as an unless block.

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: Checking username and password but cant break whileloop!
by jaffinito34 (Acolyte) on Nov 09, 2012 at 16:10 UTC

    Same thing happened, it printed "...does not match..." for each user in the file rather than just once. Where you have it is for when the username is correct, which I don't have any issues with. It's when the username entered is incorrect that is giving me problems.