我有以下脚本提示输入用户名和密码,并检查它们是否匹配。但是,即使我在提示符处按 Enter 而没有实际输入用户名或密码,它也会打印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);
}
}
答案 0 :(得分:1)
快速修复
$pass = $data{$name} or die "No password for $name";
当您输入空白名称时,密码为undef
,后者与空字符串等于真,并提供访问权限。 use warnings;
至少会抱怨这种比较。