List::UtilsBy 

use List::UtilsBy qw(
    sort_by nsort_by rev_sort_by rev_nsort_by
    max_by min_by uniq_by partition_by count_by
    zip_by unzip_by extract_by extract_first_by
    weighted_shuffle_by bundle_by
);