Perl:是否可以对通过值阈值的散列进行子集化?

Perl: Is it possible to subset a hash passing a value threshold?

假设我有以下形式的散列:

%hash = ( a => 1, b => 2, c => 3 , d => 4 , e => 5 , f => 6 );

我能否通过阈值 3 获取此类哈希的子集,获取以下 %subhash

%subhash = ( c => 3 , d => 4 , e => 5 , f => 6 );

无需进入循环?谢谢

虽然 map 意味着循环:

my %subhash = map {
                     $hash{$_} >= 3
                     ? ($_, $hash{$_})
                     : ()
                  } keys %hash;

在 5.20+

%subhash = %hash{ grep $hash{$_} >= 3, keys %hash }

(尽管 grep(和 map)仍然是一个循环)