Handle the situation where perl swaps the order of operands of
the comparison operator. See `perldoc overload` for details:
The third argument is set to TRUE if (and only if) the two
operands have been swapped. Perl may do this to ensure that the
first argument ($self) is an object implementing the overloaded
operation, in line with general object calling conventions.
#
sub _version_cmp
{
- my ($a, $b) = @_;
+ my ($a, $b, $swapped) = @_;
$b = __PACKAGE__->new($b) unless blessed($b);
+ ($a, $b) = ($b, $a) if $swapped;
+
my ($an, $bn) = ($a->{num}, $b->{num});
for (my $idx = 0;; $idx++)