#! perl -slw use strict; my %months = ( FY => 0, Jan => 0, Feb => 0, Mar => 0, Apr => 0, May => 0, Jun => 0, Jul => +1, Aug => +1, Sep => +1, Oct => +1, Nov => +1, Dec => +1, ); print for map{ unpack 'x[n]A*', $_ } sort map { my( $alpha, $num ) = m[^(\S+?)\s*(\d+)$]; $num += 2000 if $num <= 49; $num += 1900 if $num <= 99; pack 'nA*', $num + $months{ $alpha }, $_; } ; __DATA__ Apr 2006 FY05 FY98 FY04 Dec 2007 Jan 1997 Jan 1998 Dec 1998