sub sort_records { my $sort_routine; ($opt_g =~ /^t/i) ? #flag setting sort order ($sort_routine = \&sort_by_title) : ($sort_routine = \&sort_by_date); foreach (@_) { ($_->{'cleandate'} = $_->{'date'}) =~ s/\D//g; } #do I need this? my @records = map { $_->[0] } sort $sort_routine map { [ $_, $_->{'title'}, $_->{'cleandate'} ] } # or can I do it here? @_; return @records; }