use strict; use warnings; use DateTime; my @new_dates; my @dates =(``Sat, 19 Jul 2003 15:53:45 -0500'', ``1996-02-03'',``08-Feb-1998 14:15:29 GMT'', ``19850411'', ``1985-04-12'', ``1985-04'', ``18 Feb 2003 06:54:23 -0000'', ``+001999-04-12'', ``01 Jan 2003 07:03:06 -0000'', ``1982-102'', ``21 Mar 2001 09:15:32 -0800'', ``06 Jan 2002 10:08:00 -0000'', ``09 Jan 2003 11:32:40 -0500'', ); foreach my $new_date (@dates) { push(@new_dates,DateTime::Format::Mytest->parse_datetime($new_date) );} print map {$_->datetime(), ``\n''} sort @new_dates; package DateTime::Format::Mytest; use DateTime::Format::HTTP; use DateTime::Format::Mail; use DateTime::Format::ISO8601; use DateTime::Format::Builder ( parsers => { parse_datetime => [ sub { eval { DateTime::Format::HTTP->parse_datetime($_[1] ) } }, sub { eval { DateTime::Format::Mail->parse_datetime($_[1] ) } }, sub { eval { DateTime::Format::ISO8601->parse_datetime( $_[1]) } }, ] } );