##
my @a_parts = split /\./, $a;
my @b_parts = split /\./, $b;
my $result;
map { return $result if $result = ($a_parts[$_] <=> $b_parts[$_]) } (0 .. $#a_parts);
####
...
map { return $^C if ($a_parts[$_] <=> $b_parts[$_]) };
...