my %hash = ( EX => { sort => 30, data => 'ArraySite' }, AM => { sort => 40, data => 'IOPort' }, PLE => { sort => 20, data => 'AddressGroup' }, Number => { sort => 1, data => '11' }, ); for my $key (sort { $hash{$a}->{sort} <=> $hash{$b}->{sort} } keys %hash) { print $key, " => ", $hash{$key}->{data}, "\n"; }