LPM: The times they are a-changin' (or: integer hash keys)
Joe Hourcle
oneiros at dcr.net
Thu Aug 23 10:51:03 CDT 2001
On Thu, 23 Aug 2001, Joe Hourcle wrote:
> print join(' ', sort @array), "\n";
> print join(' ', sort { $a cmp $b } @array), "\n";
> print join(' ', sort { $a <=> $b } @array), "\n";
> print join(' ', sort { ($a+0) <=> ($b+0) } @array), "\n";
A few other notes about this syntax...
it can also come in handy for other abnormal sorting
eg:
#####
my %HASH = (
one => { sort => 1 },
two => { sort => 2 },
fourteen => { sort => 14 },
six => { sort => 6 },
neg_two => { sort => -2 }
);
print join (' ', sort { $HASH{$a}{sort} <=> $HASH{$b}{sort} }
keys %HASH), "\n";
#####
or, for reporting purposes:
#####
our %PEOPLE = (
Bob => { gender => 'M', age => 42 },
Dave => { gender => 'M', age => 30 },
Debbie => { gender => 'F', age => 25 },
Sue => { gender => 'F', age => 36 },
Al => { gender => 'M', age => 35 }
);
sub decend_by_age { $PEOPLE{$b}{age} <=> $PEOPLE{$a}{age}; }
print "Age Sorted Decending\n";
foreach my $person (sort decend_by_age keys %PEOPLE) {
print "$person\t$PEOPLE{$person}{age}\t$PEOPLE{$person}{gender}\n";
}
#####
-Joe
More information about the Lexington-pm
mailing list