use DateTime::Format::Builder ( parsers => { parse_datetime => [ { Quick => 'DateTime::Format::HTTP' }, { Quick => 'DateTime::Format::Mail' }, { Quick => 'DateTime::Format::IBeat' }, ] } ); # is the same as use DateTime::Format::HTTP; use DateTime::Format::Mail; use DateTime::Format::IBeat; 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::IBeat->parse_datetime( $_[1] ) } }, ] } );
(These two pieces of code can both be found in the test suite; one as quick.t, the other as fall.t.)
The "Quick" keyword should have an argument of either an object or a class name. If it's a class name then the class is "use"d.
The "method" keyword is optional with a default of "parse_datetime". It's either name of the method to invoke on the object, or a reference to a piece of code.
In any case, the resultant code ends up looking like:
my $rv = $Quick->$method($date);
perl, DateTime, DateTime::Format::Builder
I am also usually active on IRC as 'autarch' on "irc://irc.perl.org".
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
The full text of the license can be found in the LICENSE file included with this distribution.