sub x{ my $y; sub z{ say $y; } };;
Variable "$y" will not stay shared at ...
####
#! perl -slw
use strict;
use GRT; # contains:
#sub GRT::prefix(&@) { my $code = shift; map &$code, @_ }
#sub GRT::discard(&@) { my $code = shift; map &$code, @_ }
my %months = (
FY => 0,
Jan => 1, Feb => 2, Mar => 3, Apr => 4, May => 5, Jun => 6,
Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11, Dec => 12,
);
print for GRT::discard{
unpack 'x[nn]A*'
} sort{
$b cmp $a
} GRT::prefix{
my( $alpha, $num ) = m[^(\S+?)\s*(\d+)$];
$num += 2000 if $num <= 49;
$num += 1900 if $num <= 99;
pack 'nnA*', $num, $months{ $alpha }, $_;
} ;
__DATA__
Apr 2006
FY05
FY98
FY04
Dec 2007
Jan 1997
Jan 1998
Dec 1998
##
##
print for map{
## remove them once sorted
unpack 'x[nn]A*', $_
} sort map {
## prefix year & month in binary form
my( $alpha, $num ) = m[^(\S+?)\s*(\d+)$];
$num += 2000 if $num <= 49;
$num += 1900 if $num <= 99;
pack 'nnA*', $num, $months{ $alpha }, $_;
} ;