http://www.perlmonks.org?node_id=627095


in reply to Sort an array which contains date formatted elements

Late to the game I see, but for the sake of TIMTOWTDI here is my suggestion.
Use a Schwartzian Transform.
use Time::Local; my %months; @months{('jan','feb','mar','apr','may','jun','jul','aug','sep','oct',' +nov','dec')} = 0..11; my @lines = map{ $_->[1] } sort{ $a->[0] <=> $b->[0] } map{ chomp; my $val = $_; $val =~ s#webadmin_([^\.]+)\.log#my @t=split(/_/,$1);timelocal +(0,0,0,$t[1],$months{$t[0]},($t[2]-1900))#e; [$val,$_]; }<DATA>; print "$_\n" for(@lines); __DATA__ webadmin_jul_10_2007.log webadmin_jul_11_2007.log webadmin_jul_12_2007.log webadmin_jul_13_2007.log webadmin_jul_14_2007.log webadmin_jul_7_2007.log webadmin_jul_8_2007.log webadmin_jul_9_2007.log
The Output
webadmin_jul_7_2007.log webadmin_jul_8_2007.log webadmin_jul_9_2007.log webadmin_jul_10_2007.log webadmin_jul_11_2007.log webadmin_jul_12_2007.log webadmin_jul_13_2007.log webadmin_jul_14_2007.log


-InjunJoel
"I do not feel obliged to believe that the same God who endowed us with sense, reason and intellect has intended us to forego their use." -Galileo