1

動的ハッシュから「キー」を取得するにはどうすればよいですか?

コード例:

sub HASH($){
    my %hash;
    my $pass = shift;
    open (my $file, '<', "infofile") || die "No such file or dir\n";
    %hash=map split, <$file>;
    return $hash{$pass};
}

私の情報ファイルは次のようになります。

user   passwd
raid   12345

ユーザーが見つかった場合、コードはパスワードを返します。ユーザー名のみを返すにはどうすればよいですか?

4

2 に答える 2

0

(デバッグ目的で)ハッシュの印刷を追加する場合、

open (my $file, '<', "infofile") || die "No such file or dir\n";
%hash=map split, <$file>;

for (keys %hash) {
  print "$_: $hash{$_}\n";
}

あなたが見るでしょう:

raid: 12345
user: passwd

$passしたがって、変数は実際にはユーザー名であり、return $pass;はユーザー名を返すと私は主張します。私はこれがあなたが望むものであるとは想像できません。一方、特定のパスワードに対応するユーザーを見つけることも、あまりありそうにありません。

于 2013-03-06T20:41:04.130 に答える
0
sub HASH($){
 my %hash;
 my $pass = shift;
 open (my $file, '<', "infofile") || die "No such file or dir\n";
 %hash=map split, <$file>;
 my ($user,$selecteduser);
  foreach $user (keys %hash){
   $selecteduser = $user if $hash{$user} eq $pass;
  }
 return $selecteduser;
}
于 2013-03-06T20:46:04.130 に答える