##
minima { length($a) <=> length($b) or $a cmp $b } @data;
##
##
sub minima(&@)
{
my $comp = shift;
@_ <= 1 and return(@_);
my @cur = ( $_[0] );
for my $i ( 1 .. $#_ )
{
local( $a, $b ) = ( $cur[0], $_[$i] );
my $r = &$comp;
if ( $r > 0 )
{
@cur = ($_[$i]);
}
elsif ( $r == 0 )
{
push @cur, $_[$i];
}
# else keep current best.
}
@cur
}