根据Perl中的哈希值打印密钥

时间:2012-09-06 16:25:57

标签: perl hash

我需要根据哈希值来打印密钥。这是代码,我写了

foreach $value (values %hash)
{
    print "$value\t$hash{$value}\n";
}

错误:我只能打印值,但不能打印键。

非常感谢任何帮助。

由于

7 个答案:

答案 0 :(得分:8)

哈希设计为按键访问,而不是按值访问。您需要遍历键列表,而不是值。

然后您可以使用键来访问相关值。

foreach my $key (keys %hash) {
    my $value = $hash{$key};
    say "$key = \t$value";
}

答案 1 :(得分:4)

print "$_\t$hash{$_}\n" for keys %hash;

答案 2 :(得分:3)

尝试:

for my $key (keys %hash) {
    print "$key\t$hash{$key}\n";
}

答案 3 :(得分:1)

一衬垫:

map { print "$_\t$hash{$_}\n" } keys %hash;

答案 4 :(得分:1)

如果你想迭代键和值,我可能会使用while和each:

while (my ($key, $value) = each %hash) {
    say "$key -> $value";
}

答案 5 :(得分:1)

标题要求根据值打印键。

如果您在苛刻的表中的键和值应该一对一

foreach $key (keys %hash)
{
  $r_hash{$hash{$key}}=$key;
}
....

答案 6 :(得分:0)

如果您想通过值访问它,请将哈希定义为

$x = {  'x1' => [ 'one','x1']}   


foreach ( values %$x ) 
{                                                                                     
     foreach $m1 (@$_) { 
        print "$m1\n";
     }
}     

请注意,您可以通过值数组的第二个成员从值获取键。