use Sort::Key::Multi 'ru_ru_keysort'; # sort by two unsigned keys in reverse order use List::Util 'sum'; my @sorted = ru_ru_keysort { my $l = $scan->{$_}; (scalar(@$l), sum(@$l)) } keys %$scan;