English 中文(简体)
如何利用各种价值观寻找洗衣,并返还在碎条成功时的相应钥匙
原标题:how to search a hash using the values and return the corresponding key upon success in perl

我正在寻找使用 per的草原。 我有以下数据。

%hash = {0 => "Hello", 1=> "world"}. 

现在,我想要利用这些价值观(世界大同和小ello)搜寻洗衣,并归还相应的钥匙。

实例:我想寻求世界,结果应为1

最佳回答

以<代码>(千分百分数)标示的散列钥匙/代码,并核对贵重数值。 如果你找到你所期待的东西,就会返回。

my $hash = { 0 => "World", 1 => "Hello" };

for ( keys %$hash ) {
    my $val = $hash->{$_};
    return $_ if $val eq  World ; # or whatever you are looking for
}

另一种选择是使用<条码>(......每一条......)

my $hash = { 0 => "World", 1 => "Hello" };

while (($key, $val) = each %$hash) {
    return $key if $val eq  World ; # or whatever you are looking for
}

使用<代码>{>}字面字面上添加了斜体,而不是 has。

$h = { a =>  b , c =>  d  };

to create a literal hash you use ( )

%h = ( a =>  b , c =>  d  );

执行<代码>

$h = { a =>  b , c =>  d  };
print "$k :: $v
" while (($k, $v) = each %$h );  

c :: d
a :: b
问题回答

如果:

  1. The hash isn t very large, and
  2. The values are unique

http://perldoc.perl.org/Functions/reverse.html”

my %lookup = reverse %hash;
my $key = $lookup{ world }; # key from %hash or undef
use strict;
use warnings;

my %hash = (0 => "Hello", 1=> "world");
my $val =  world ;

my @keys = grep { $hash{$_} eq $val } keys %hash;

print "Keys: ", join(", ", @keys), "
";

这将归还所有钥匙,即: 如果对多个钥匙的价值相同。





相关问题
Why does my chdir to a filehandle not work in Perl?

When I try a "chdir" with a filehandle as argument, "chdir" returns 0 and a pwd returns still the same directory. Should that be so? I tried this, because in the documentation to chdir I found: "...

How do I use GetOptions to get the default argument?

I ve read the doc for GetOptions but I can t seem to find what I need... (maybe I am blind) What I want to do is to parse command line like this myperlscript.pl -mode [sth] [inputfile] I can use ...

Object-Oriented Perl constructor syntax and named parameters

I m a little confused about what is going on in Perl constructors. I found these two examples perldoc perlbot. package Foo; #In Perl, the constructor is just a subroutine called new. sub new { #I ...

Where can I find object-oriented Perl tutorials? [closed]

A Google search yields a number of results - but which ones are the best? The Perl site appears to contain two - perlboot and perltoot. I m reading these now, but what else is out there? Note: I ve ...

热门标签