$hash{'Me'}->{"name"} = "Me"; $hash{'Me'}->{"number"} = "7.7"; $hash{'Chuck'}->{"name"} = "Chuck"; $hash{'Chuck'}->{"number"} = "7.7"; $hash{'Zed'}->{"name"} = "Zed"; $hash{'Zed'}->{"number"} = "7.7"; $hash{'Wife'}->{"name"} = "Wife"; $hash{'Wife'}->{"number"} = "7.6"; $hash{'Dad'}->{"name"} = "Dad"; $hash{'Dad'}->{"number"} = "53"; $hash{'Michael'}->{"name"} = "Michael"; $hash{'Michael'}->{"number"} = "24"; test(\%hash); sub test{ my($hr) = @_; # sort criteria embedded: expected results @sortedKeys = sort { $hr->{$b}->{"number"} <=> $hr->{$a}->{"number"} } keys %$hr; print "sort criteria embedded\n"; foreach my $sortedKey(@sortedKeys){ print $hr->{$sortedKey}->{"number"} . " " . $hr->{$sortedKey}->{'name'} . "\n"; } # sort criteria eval-ed: wacky results my $sortCriteria = '$hr->{$b}->{"number"} <=> $hr->{$a}->{"number"}'; # WHAT AM I DOING WRONG ON THE NEXT LINE? @sortedKeys = sort { eval $sortCriteria } keys %$hr; print "\n\nsort criteria eval-ed\n"; foreach my $sortedKey(@sortedKeys){ print $hr->{$sortedKey}->{"number"} . " " . $hr->{$sortedKey}->{'name'} . "\n"; } } #### sort criteria embedded 53 Dad 24 Michael 7.7 Me 7.7 Zed 7.7 Chuck 7.6 Wife sort criteria eval-ed 53 Dad 7.6 Wife 7.7 Me 7.7 Zed 24 Michael 7.7 Chuck