#!/usr/bin/perl use strict; use warnings; my %hash = ( name1 => {iid1 => 6, iid2 => 3, iid3 => 4}, name2 => {iid4 => 3, iid6 => 5, iid2 => 2} ); for my $name ( sort {$b cmp $a} keys %hash ) { my $count; print "Name: $name\n"; for my $iid ( sort {$hash{$name}{$b} <=> $hash{$name}{$a}} keys %{ $hash{$name} } ) { print "$hash{$name}{$iid}\t\t $iid\n"; $count += $hash{$name}{$iid}; } print "$count\t\t TOTAL\n\n"; }