#!/usr/bin/perl -w use strict; use warnings; my (%sorthash,%test) = (); $sorthash{'10'}{'20'}= '1'; $sorthash{'40'}{'50'}= '4'; $sorthash{'20'}{'30'}= '2'; for my $keys1 (keys %sorthash ) { #print "keys1: $keys1\t"; %test = %{$sorthash{$keys1}}; for my $testkeys (sort keys %test) { print "keys: $keys1\t$testkeys\t"; print "values: $test{$testkeys}\n"; } } #### This outputs: keys: 40 50 values: 4 keys: 10 20 values: 1 keys: 20 30 values: 2 instead of: keys: 10 20 values: 1 keys: 20 30 values: 2 keys: 40 50 values: 4