my @sorted= do { my @sorton= map { get_date($_) } @data; my @indices= sort { $sorton[$a] cmp $sorton[$b] } 0..@data; @data[@indices]; }; #### my @sorted= map { restore_orig_data($_) } sort map { prepend_sort_key($_) } @data;