Perl从哈希中提取元素范围

Leb*_*156 1 perl hash

如果我有哈希:

%hash = ("Dog",1,"Cat",2,"Mouse",3,"Fly",4);
Run Code Online (Sandbox Code Playgroud)

如何提取此哈希的前X个元素.例如,如果我想要前3个元素,%newhash将包含("Dog",1,"Cat",2,"Mouse",3).

我正在使用大型哈希(约8000键).

yst*_*sth 5

"这个哈希的第一个X元素"并不意味着什么.前三个元素按数值顺序排列?

my %hash = ( 'Dog' => 1, 'Cat' => 2, 'Mouse' => 3, 'Fly' => 4 );
my @hashkeys = sort { $hash{$a} <=> $hash{$b} } keys %hash;
splice(@hashkeys, 3);

my %newhash;
@newhash{@hashkeys} = @hash{@hashkeys};
Run Code Online (Sandbox Code Playgroud)