printf "weight:%d intensity: %d filename: %s\n", $hoh{ $_->[ 0 ] }{ $_->[ 1 ]}{ weight }, $hoh{ $_->[ 0 ] }{ $_->[ 1 ]}{ intensity }, $_->[ 0 ] for sort{ $hoh{ $a->[0] }{ $a->[1] }{weight} <=> $hoh{ $b->[0] }{ $b->[1] }{weight} } map{ my $hash = $_; map{ [ $hash, $_ ] } keys %{ $hoh{ $_ } } } keys %hoh;; weight:1000 intensity: 4 filename: FILENAME3 weight:2000 intensity: 7 filename: FILENAME2 weight:3000 intensity: 2 filename: FILENAME1 weight:4000 intensity: 3 filename: FILENAME1 weight:5000 intensity: 3 filename: FILENAME2 weight:6000 intensity: 3 filename: FILENAME3 #### printf "weight:%d intensity: %d filename: %s\n", @{ $_ }[ 0, 1, 2 ] for sort{ $a->[ 0 ] <=> $b->[ 0 ] } map{ my $key = $_; map{ [ $hoh{ $key }{ $_ }{ weight }, $hoh{ $key }{ $_ }{ intensity }, $key, $_ ] } keys %{ $hoh{ $key } } } keys %hoh;; #### printf "weight:%d intensity: %d filename: %s\n", @$_ for sort{ $a->[ 0 ] <=> $b->[ 0 ] } map{ my $key = $_; map{ [ $_->{ weight }, $_->{ intensity }, $key ] } values %{ $hoh{ $key } } } keys %hoh;;