A simple lookup table that adjusts the year value according to the month would be much quicker than using generic date modules. This is a slight tweak of my earlier post in another thread (It's generally better to ask follow up questions in the original thread rather than start a new thread). Of course, any answer can only be as good as the information you provide. If there is further undisclosed information (the fiscal year in the UK runs 6th April through 5th April), then further tweaks may be necessary:
#! 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>;
__DATA__
Apr 2006
FY05
FY98
FY04
Dec 2007
Jan 1997
Jan 1998
Dec 1998
Output C:\test>junk
Jan 1997
FY98
Jan 1998
Dec 1998
FY04
FY05
Apr 2006
Dec 2007
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|