use Tie::IxHash; my @array = qw( 9 9 9 1 1 2 2 2 2 3 3 3 3 4 4 ); tie my %hash, 'Tie::IxHash'; $hash{$_}++ for @array; while( my ($key,$value) = each %hash ){ print $key, " -- ", $value,"\n"; } untie %hash;