>>653 Perl5

use feature current_sub;
@is = (['0.1.2', '0.0'], ['1.2.3', '1.3'], ['0.0.0', '0.0']);
for (@is) {
 ($l, $r) = @$_;
 @l = split'\.', $l;
 @r = split'\.', $r;
 $z = sub {
  my $a = shift @l;
  my $b = shift @r;
  if (defined $a or defined $b) {
   $a //= 0;
   $b //= 0;
   $a <=> $b or __SUB__->()
  } else {
   0
  }
 }->();
 %d = (-1 => ' <', 0 => '==', 1 => '> ');
 print "$l $d{$z} $r : $z\n";
}

実行結果
~ $ perl 13_653.pl
0.1.2 > 0.0 : 1
1.2.3 < 1.3 : -1
0.0.0 == 0.0 : 0