5 use experimental 'multidimensional';
7 my @lists = map { bless $_, 'Sep' } [[2]], [[6]];
8 push @lists, map { eval $_ } grep { length } <>;
9 @lists = sort { compare($b, $a) } @lists;
12 for my $i (0 .. $#lists) {
13 $m *= $i+1 if ref $lists[$i] eq 'Sep';
26 if (!defined $lv && defined $rv) {
28 } elsif (defined $lv && !defined $rv) {
30 } elsif (!defined $lv && !defined $rv) {
32 } elsif (ref $lv && ref $rv) {
33 $comp = compare($lv, $rv);
34 } elsif (ref $lv && !ref $rv) {
35 $comp = compare($lv, [$rv]);
36 } elsif (!ref $lv && ref $rv) {
37 $comp = compare([$lv], $rv);
38 } elsif (!ref $lv && !ref $rv) {
39 $comp = $rv <=> $lv if $lv != $rv;
44 return $comp if defined $comp;