>perl -wMstrict -le "my %HoA = ( 2 => ['cd', 20090101, 91010], 3 => ['ef', 20090201, 101000], 1 => ['ab', 20090101, 91010], ); my @ordered_keys = sort { $HoA{$a}[1] <=> $HoA{$b}[1] || $HoA{$a}[2] <=> $HoA{$b}[2] || $a <=> $b } keys %HoA; for my $key (@ordered_keys) { print qq{$key -> [@{$HoA{$key}}]} } " 1 -> [ab 20090101 91010] 2 -> [cd 20090101 91010] 3 -> [ef 20090201 101000]