my $HoA_ref = {'GAT' => [2, ['ttt',-3,1],['ttc',-3,3],['ccc',-1,2]], 'AAA' => [13,['aaa',-1,2],['atg',-2,2]], 'TTT' => [11,['tta',-2,1],['atc',-3,3]] }; # Need to print 'AAA' slice only coz have'13' as highest value #### AAA 13: aaa,-1,2 atg,-2,2 #### #namely how can I pick only the topmost with this subroutine #besides some reference error that I encounter. sub print_zHoA { my ($HoA) = @_; foreach my $mc (sort {$HoA{$a}[0] <=> $HoA{$b}[0]} keys %$HoA){ print "$mc $HoA{$mc}[0]:\n"; foreach my $i (0.. $#{$$HoA{$mc}}) { print "$$HoA{$mc}[$i]->[0],$$HoA{$mc}[$i]->[1],$$HoA{$mc}[$i]->[2]"; } print "\n"; } }