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