我有一个正在处理的用户登录,我正试图使用哈希密钥分配来检查一个平面文件,看看输入的密码是否与存储的密码匹配。然而,我不太清楚自己在做什么,所以一些指导会很棒。我提供的代码工作正常,但其中有些内容应该更新为更现代的Perl编程风格,我只是不知道如何做到这一点。http://codepad.org/YYGmdknl
你是说代码不起作用吗?它确实很脏,但看起来应该能用。
修复:
use strict; # Always use this!
use warnings; # Always use this!
my $user = ...;
my $password = ...;
my %passwords;
open(my $fh, '<', 'password.txt') or die $!;
while (<$fh>) {
chomp;
my ($user, $password) = split /:/;
$passwords{$user} = $password;
}
close($fh);
if (exists($passwords{$user}) && $password eq $passwords{$user}) {
print p("Hello"." ".$user);
} else {
print p("Login failed.");
}
但为什么是杂碎?
use strict;
use warnings;
my $user = ...;
my $password = ...;
my $logged_in;
open(my $fh, '<', 'password.txt') or die $!;
while (<$fh>) {
chomp;
my ($file_user, $file_password) = split /:/;
if ($user eq $file_user) {
if ($password eq $file_password) {
$logged_in = 1;
}
last;
}
}
close($fh);
if ($logged_in) {
print p("Hello"." ".$user);
} else {
print p("Login failed.");
}