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.