如何在Perl中从散列中获取最小值密钥

如何在Perl中从散列中获取最小值密钥,perl,hash,minimum,Perl,Hash,Minimum,我有一个脚本,它能够从散列值中选择最小值 use strict; use warnings; use Data::Dumper; use List::Util qw(min); my @array = qw/50 51 52 53 54/; my $time = 1596561300; my %hash; foreach my $element(@array){ $hash{$time} = $element; $time += 6; #based on some

我有一个脚本,它能够从散列值中选择最小值

use strict;
use warnings;

use Data::Dumper;
use List::Util qw(min);

my @array = qw/50 51 52 53 54/;

my $time = 1596561300;

my %hash;

foreach my $element(@array){  
    $hash{$time} = $element;
    $time += 6; #based on some condition incrementing the time to 6s
}

print Dumper(\%hash);

my $min = min values %hash; 
print "min:$min\n";

在这里,我可以从散列值中的所有值中获得
50
。但是我如何也获得对应于最小值的散列键,也就是说,
1596561300

从该键可以获得值。因此,您需要具有最小关联值的键


min LIST
可以写为
reduce{$a查看@ikegami的答案,以获得OP确切问题的最干净、最快速的解决方案。
如果您需要按数值排序的顺序访问其他键(我从您的示例中假设这就是您想要的),请使用以下命令:

my @keys_sorted_by_value = sort { $hash{$a} <=> $hash{$b} } keys %hash;

# key with min value: $keys_sorted_by_value[0]
# ...
# key with max value: $keys_sorted_by_value[-1]
my @keys_sorted_by_value = sort { $hash{$a} <=> $hash{$b} } keys %hash;

# key with min value: $keys_sorted_by_value[0]
# ...
# key with max value: $keys_sorted_by_value[-1]
my @keys_sorted_by_value = sort { $hash{$a} cmp $hash{$b} } keys %hash;