my @lines = ("AUDIO2-A3.12_P1:project:BmwWtz#1 Wed May 31 13:35:31 2006", "AUDIO2-A3.17_P1:project:BmwWtz#1 Wed Sep 13 11:22:57 2006", "AUDIO2-A3.8:project:BmwWtz#1 Mon May 08 18:18:02 2006"); my %months = ( "Jan" => "01", "Feb" => "02", "Mar" => "03", "Apr" => "04", "May" => "05", "Jun" => "06", "Jul" => "07", "Aug" => "08", "Sep" => "09", "Oct" => "10", "Nov" => "11", "Dec" => "12" ); my %sort_dates = (); foreach my $line (@lines) { if( $line =~ /(.*#[0-9])\s+[a-zA-Z]{3} ([a-zA-Z]{3}) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) (\d{4})$/ ) { $sort_dates{$7.$months{$2}.$3.$4.$5.$6} = $1; } } for my $key(sort keys %sort_dates){ print $key," --> ",$sort_dates{$key},"\n"; }