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
);

my @by_dob = sort_by { $_->dob } @people;

my @by_dob = sort { $a->dob cmp $b->dob } @people;
my @by_dob = sort { $b->dob cmp $a->dob } @people;