in reply to Limit the size of a hash

use strict; use warnings; use Data::Dumper; my $keep = 5; my @keeper; # populate our store with the first $keep vals for (1 .. $keep) { my @vals = split /\s+/, <DATA>; my $score = pop @vals; push @keeper, [$score, \@vals]; } # Sort it so the smallest is at the end @keeper = sort {$a->[0] <=> $b->[0]} @keeper; print "$_->[0], " for @keeper; while (<DATA>) { my @vals = split; next unless @vals; # could do a more sophisticated test my $score = pop @vals; if ($score > $keeper[0]->[0]) { $keeper[0] = [$score, \@vals]; @keeper = sort {$a->[0] <=> $b->[0]} @keeper; print "\nAdded $score: now have: "; print "$_->[0], " for @keeper; } } __DATA__ 0 5 3 7 0.97 1 5 4 8 0.18 1 5 4 8 0.21 1 5 4 8 0.22 1 5 4 8 0.52 1 5 4 8 0.16 1 5 4 8 0.18 1 5 4 8 0.72 1 5 4 8 0.32 1 5 4 8 0.17 1 5 4 8 0.52 1 5 4 8 0.92 6 8 4 6 0.54

Cheers,
R.

Pereant, qui ante nos nostra dixerunt!