use strict; use warnings; use Data::Dumper; use Tie::Hash::Sorted; my %sequence = ( 1345 => 10, 123 => 20, 500 => 30, ); print Dumper \%sequence; # and here's the part that makes ears bleed ... tie my %sorted_sequence, 'Tie::Hash::Sorted', Hash => \%sequence, Sort_Routine => sub {[sort {$a <=> $b} keys %{$_[0]}]}, ; print Dumper \%sorted_sequence; $sorted_sequence{901} = 40; $sorted_sequence{201} = 50; print Dumper \%sorted_sequence;