2

我有一个哈希值,其中第一个键是字符串,第二个键是整数。我正在尝试获取散列散列中最低的第二个键。这是我的哈希。

%HoH = (
    flintstones => {
        8 => "fred",
        4 => "barney",
    },
    jetsons => {
        5 => "george",
        1 => "jane",
        9 => "elroy",    # Key quotes needed.
    },
    simpsons => {
        99 => "homer",
        5  => "marge",
        3  => "bart",
    },
);

如何获得哈希的最低(最小)键simpsons?在这种情况下,答案是3。我能找到的最接近的相关搜索是一种获取具有最高值的键的方法。但我试图获得具有最低数值的密钥。

================== 编辑 ============ 我的尝试 ================

foreach my $cartoon (keys %HoH){
    if ($cartoon == "simpsons"){
        $HoH{$cartoon}{<numeric key>};   # somehow store and print lowest key
    }
}

我不能按顺序遍历键(1、2、3、4 等)并简单地存储并返回最低键,因为键(1、2、3、4 等)可能不存在。我可能会尝试将密钥存储在单独的数组中,并获取存储在该数组中的最小密钥。那是我的尝试。这是一种关于这样做的方式。由于这是一种迂回的方式,接下来我会做更多的谷歌搜索,看看是否有更简单的方法(单线方式)来做到这一点。

4

2 回答 2

8
use List::Util qw(min);
print min(keys(%{$HoH{simpsons}}));
于 2015-11-03T18:20:12.973 回答
3
my $min = (sort {$a <=> $b} keys $HoH{'simpsons'})[0];
print $min;
于 2015-11-03T18:35:55.313 回答