use strict; use warnings; my @dates = ; my %months = ('Jan' => 1, 'Feb' => 2, 'Dec' => 12, ); foreach my $str_date (@dates) { $str_date =~ /^\w*\s*\w*\s*(\w*)\s*(\d*).*(\d{4})$/; my($month, $day, $year) = ($1, $2, $3); my $date = sprintf("%4d%02d%02d", $year, $months{$month}, $day); if($date gt "20080228") { print $str_date; } } __DATA__ usage1 Thu Feb 28 17:30:47 2008 usage2 Fri Feb 29 03:55:22 2008 usage3 Fri Feb 29 04:00:46 2008 usage4 Fri Feb 29 04:10:48 2008 #### usage2 Fri Feb 29 03:55:22 2008 usage3 Fri Feb 29 04:00:46 2008 usage4 Fri Feb 29 04:10:48 2008