即使我在提示符处输入任何内容,为什么我的程序仍然有用?

时间:2014-03-12 17:37:51

标签: perl

我有以下脚本提示输入用户名和密码,并检查它们是否匹配。但是,即使我在提示符处按 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);
    }
}

1 个答案:

答案 0 :(得分:1)

快速修复

$pass = $data{$name} or die "No password for $name";

当您输入空白名称时,密码为undef,后者与空字符串等于真,并提供访问权限。 use warnings;至少会抱怨这种比较。