我有以下脚本提示输入用户名和密码并检查它们是否匹配。但是,即使我只是在提示时输入输入,但不输入用户名或密码,它也会打印Success!
。为什么?为什么我的程序即使在提示处什么也不输入的情况下工作?
#!/usr/bin/perl
%data = qw(
javad root
ali 1234
george password
);
print "Please enter your name :\n";
$name = <STDIN>;
chomp($name);
$pass = $data{$name};
#receiving password from user
#compare it with correct password
#print the result
print "What is your password ?\n";
$guess = <STDIN>;
chomp($guess);
$whileTest = "True";
while ($whileTest eq "True") {
if ($pass eq $guess) {
print "Success!\n";
$whileTest = "False";
}
elsif ($pass ne $guess) {
print "Wrong password , Try again :\n";
$guess = <STDIN>;
chomp($guess);
}
}
因为你实际上并不需要在'%data'中存在'$ name'。因此,'$ data {$ name}'返回[undef](http://perldoc.perl.org/functions/undef.html),这将'eq'一个空密码。 – Miller
请用户在您的代码中正确缩进。我已经清理了它,使其更具可读性。 – ThisSuitIsBlackNot
'严格使用;使用警告;' – squiguy