#!/usr/bin/perl use strict; use warnings; use Tie::Hash::Sorted; my $sort = sub { my $hash = shift; [ sort {$hash->{$b} <=> $hash->{$a}} keys %$hash ]; }; tie my %hash, 'Tie::Hash::Sorted', 'Sort_Routine' => $sort; %hash = ( '1-1' => 80, '1-4' => 26, '4-4' => 3, '2-2' => 180, '2-4' => 72, '1-2' => 2196 ); Print_Top(2, \%hash); sub Print_Top { my ($max, $hash) = @_; for ( keys %$hash ) { return if ! $max--; print "$_ : $hash->{$_}\n"; } }