2012-02-13 5 views
-1

私は現在作業中のユーザーログインがあります。ハッシュキー割り当てを使用してフラットファイルをチェックし、入力されたパスワードが保存されたパスワードと一致するかどうかを確認しようとしています。しかし、私は何をしているのかについて非常に良い考えを持っていないので、いくつかの指針はすばらしいでしょう。私が提供したコードは正しく動作していますが、Perlプログラミングのより現代的なスタイルに更新する必要があるものがあります。その方法はわかりません。 http://codepad.org/YYGmdknlハッシュを使用してフラットファイルのユーザーログインを確認する

+0

このタイプの質問は、特定の問題に関する特定の質問を対象としているため、実際にはSOのトピックではありません。これはおそらくhttp://codereview.stackexchange.com –

+0

私が心配している主なことは、ハッシュ検索の作業を取得する問題です。その後、私は自分で他のすべてを修正することができます、私はちょうどそれが実際に実行されるようにコードの残りの部分をダムする必要がありました。 – Jared

+0

私が初めて言ったように、そのタイプの質問はhttp://codereview.stackexchange.comに属しています –

答えて

3

コードが機能しないと言っていますか?確かに汚いですが、うまくいくように見えます。

修正:

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."); 
} 
関連する問題