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
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 回答
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实际上是用户名,而 areturn $pass;将返回用户名。我无法想象这是你想要的。另一方面,找到与给定密码对应的用户听起来也不太可能。

于 2013-03-06T20:41:04.130 回答