use List::BinarySearch qw(binsearch_range); foreach my $ix (0..99) { my @params = params($ix); push @array, MyClass->new(@params); } my ($low_ix, $high_ix) = binsearch_range { $a <=> $b->fetch } $min_wanted, $max_wanted, @array;