--- toast 2003/09/16 20:47:02 1.205 +++ toast 2003/09/17 02:58:57 1.206 @@ -934,16 +934,27 @@ ############################################################################## -sub pad40($) +sub padfactor() { 40 } + +sub padsingle($) { my($arg) = @_; + $arg = "" unless defined($arg); my($len) = length($arg); - $len > 40 ? $arg : (' ' x (40 - $len)) . $arg; + $len > padfactor ? $arg : (' ' x (padfactor - $len)) . $arg; } +sub padnum($) +{ + my($arg) = @_; + my(@n) = split(/\./, $arg); + join(' ', map(padsingle($_), @n[0..max(padfactor, $#n)])); +} + sub cmpab() { - my($na, $nb) = map { my($x) = $_; $x =~ s/\d+/pad40($&)/ge; $x } ($a, $b); + my($na, $nb) = + map { my($x) = $_; $x =~ s/\d+(\.\d+)*/padnum($&)/ge; $x } ($a, $b); my($lca, $lcb) = (lc($na), lc($nb)); $lca ne $lcb ? $lca cmp $lcb : $na ne $nb ? $na cmp $nb : $a cmp $b; }