- my $last = reduce {
- CPANPLUS::Dist::Gentoo::Maps::version_gcmp($b->[1], $a->[1]) >= 0 ? $b : $a
- } map [ $_, /\Q$atom\E-v?([\d._pr-]+).*?\.ebuild$/ ? $1 : 0 ], @ebuilds;
-
- my $dep;
- if (defined $ver) { # implies that $version is defined
- next unless
- CPANPLUS::Dist::Gentoo::Maps::version_gcmp($last->[1], $ver) >= 0;
- $dep = ">=$category/$atom-$ver";
- } else {
- $dep = "$category/$atom";
- }
+ my @atoms = map CPANPLUS::Dist::Gentoo::Atom->new(
+ defined $version ? (
+ ebuild => $_,
+ range => '>=',
+ ) : (
+ category => $category,
+ name => $name,
+ ),
+ ), @ebuilds;
+
+ my $atom = reduce { $a < $b ? $b : $a } @atoms; # handles overloading
+ next if defined $version and $atom < $version;