如何从Perl中的哈希表中获取前n个键值对

时间:2012-10-28 22:47:57

标签: perl hash

我对perl很新,所以我搜索了一段时间,但仍然得到答案。我想从哈希表中获得前100对,但不知道如何做到这一点。要从哈希表中获取每一对,我们可以执行以下操作:

foreach my $term (keys %hashtable)
{
    do something regarding $hashtable{$term} here
}

但如何获得前100对呢?非常感谢!

3 个答案:

答案 0 :(得分:8)

另一种方式:

my %hash100 = (%hashtable)[0..199];
while ( my ($key, $value) = each %hash100 ) {
    ...
}

或:

for my $key ( (keys %hashtable)[0..99] ) {
    my $value = $hashtable{$key};
    ...
}

答案 1 :(得分:7)

请注意,由于散列没有特定的顺序,所以没有像散列中的前100个对。

另一种解决方案可以保护您免受一个错误的影响:

for my $i (1 .. 100) {
    my ($key, $value) = each %hashtable;
    print "$key => $value\n";
}

答案 2 :(得分:0)

我也是Perl的新手,也许有更优雅的解决方案,但你可以做到以下几点:

my $i = 0;
foreach my $term (keys %hashtable) {
    ...
    do something regarding $hashtable{$term} here
    ...

    last if ($i++) == 100;    
}