my $parser = DateTime::Format::Builder->create_parser( regex => qr/^(\d\d\d\d)(\d\d)(\d\d)T(\d\d)(\d\d)(\d\d)$/, params => [qw( year month day hour minute second )], );
regex is a regular expression that should capture elements of the datetime string. This is a required element. This is the key whose presence indicates it's a specification that belongs to this class.
params is an arrayref of key names. The captures from the regex are mapped to these ($1 to the first element, $2 to the second, and so on) and handed to "DateTime->new". This is a required element.
extra is a hashref of extra arguments you wish to give to "DateTime->new". For example, you could set the "year" or "time_zone" to defaults:
extra => { year => 2004, time_zone => "Australia/Sydney" },
If only a coderef is supplied, then it is called with arguments of $self, $p and "extra".
In short:
$self->$coderef( %{$p}, %{ $self->{extra} } );
The method is expected to return a valid DateTime object, or "undef" in event of failure, but can conceivably return anything it likes. So long as it's 'true'.
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.