Jeff Aa wrote:
> Folks,
>
> I want to sort my masked hashes into neat little piles for easier
> digestion:
> Please note this is _example_ data 8-)
>
> my $h = {
> a => { name => 'apple', taste => 3 },
> b => { name => 'peach', taste => 2 },
> c => { name => 'banana', taste => 2 },
> }
>
> I want to sort first on taste and then on name, [and in the real world
> on other things as well..] ATM I do this
>
> foreach my $item ( sort
> {
> return $a->{taste} <=> $b->{taste} unless $a->{taste}==$b->{taste};
> return $a->{name} cmp $b->{name};
> } values %$h ) {
> print "Name: $item->{name} taste: $item->"taste}\n";
> }
>
the return statment is uneccessary. try something like:
#!/usr/bin/perl -w
use strict;
my $h = { a => { name => 'apple', taste => 2 },
b => { name => 'peach', taste => 1 },
c => { name => 'banana', taste => 3},
d => { name => 'peach', taste => 2}};
foreach my $k (sort {$h->{$a}->{taste} <=> $h->{$b}->{taste} ||
$h->{$a}->{name} cmp $h->{$b}->{name}} keys %{$h}){
print "$h->{$k}->{name} $h->{$k}->{taste}\n";
}
__END__
david
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]