use overload (
'<=>' => \&_spaceship,
+ 'cmp' => \&_cmp,
'""' => \&_stringify,
);
return $v1 <=> $v2;
}
+sub _cmp {
+ my ($a1, $a2, $r) = @_;
+
+ my $s1 = $a1->qualified_name;
+ my $v1 = $a1->version;
+ $s1 .= "-$v1" if defined $v1;
+
+ my $s2;
+ if (Scalar::Util::blessed($a2) and $a2->isa(__PACKAGE__)) {
+ $s2 = $a2->qualified_name;
+ my $v2 = $a2->version;
+ $s2 .= "-$v2" if defined $v2;
+ } else {
+ $s2 = $a2;
+ }
+
+ $s1 cmp $s2;
+}
+
sub _stringify {
my ($a) = @_;