use strict; use warnings; my $cutoff = 30; print map { $_->[0] } sort { $a->[3] cmp $b->[3] || $a->[1] cmp $b->[1] || $a->[2] cmp $b->[2] } map { $_->[3] += $_->[3] >= $cutoff ? 1900 : 2000; $_ } map { [ $_, m{(\d\d)/(\d\d)/(\d\d)} ] } ; __END__ 12/24/99 09/06/04 12/03/99 06/24/99 10/17/98 04/24/99 #### 10/17/98 04/24/99 06/24/99 12/03/99 12/24/99 09/06/04