my %hash = (foo => [1..2], bar => [1..3], baz => [1]); my @keys = sort { @{$hash{$a}} <=> @{$hash{$b}} } keys %hash; print "$_ - @{$hash{$_}}", $/ for @keys; __output__ baz - 1 foo - 1 2 bar - 1 2 3