4

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

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

但是如何从中取出前 100 双呢?非常感谢!

4

3 回答 3

8

其他方式:

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

或者:

for my $key ( (keys %hashtable)[0..99] ) {
    my $value = $hashtable{$key};
    ...
}
于 2012-10-28T23:09:53.310 回答
7

请注意,由于散列没有特定的顺序,因此与散列的前 100对不同。

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

for my $i (1 .. 100) {
    my ($key, $value) = each %hashtable;
    print "$key => $value\n";
}
于 2012-10-28T23:04:19.077 回答
0

我也是 Perl 的新手,可能有更优雅的解决方案,但您可以执行以下操作:

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

    last if ($i++) == 100;    
}
于 2012-10-28T22:56:32.243 回答