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