我正在寻找使用 perl 的哈希搜索实现。我的哈希中有以下数据
%hash = {0 => "Hello", 1=> "world"}.
现在我想使用值(意味着世界和你好)搜索哈希并返回相应的键。
示例:我想搜索世界,结果应该是 1
for ( keys %hash ) ...
使用语句迭代散列的键并随时检查值。如果你找到你要找的东西,返回
my $hash = { 0 => "World", 1 => "Hello" };
for ( keys %$hash ) {
my $val = $hash->{$_};
return $_ if $val eq 'World'; # or whatever you are looking for
}
另一种选择是使用while ( ... each ... )
my $hash = { 0 => "World", 1 => "Hello" };
while (($key, $val) = each %$hash) {
return $key if $val eq 'World'; # or whatever you are looking for
}
文字的使用{ }
创建一个哈希引用而不是一个哈希
$h = { a => 'b', c => 'd' };
创建您使用的文字哈希( )
%h = ( a => 'b', c => 'd' );
while ... each
在 hashref 上执行
$h = { a => 'b', c => 'd' };
print "$k :: $v\n" while (($k, $v) = each %$h );
c :: d
a :: b
如果:
您可以简单地使用以下命令创建查找哈希reverse
:
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), "\n";
这将返回所有键,即如果多个键的值相同。