---
name: "DateTime::Format::Builder::Parser::generic"
section: "3pm"
platform: "linux"
package: "perl-datetime-format-builder"
version: "1:0.83-8"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/DateTime::Format::Builder::Parser::generic"
---

# DateTime::Format::Builder::Parser::generic(3pm)

Useful routines

## NAME

DateTime::Format::Builder::Parser::generic - Useful routines

## VERSION

version 0.83

## METHODS

### Useful

*new*

Standard constructor. Returns a blessed hash; any arguments are placed in the hash. This is useful for storing information between methods.

*generic\_parser*

This is a method provided solely for the benefit of `"Parser"` implementations. It semi-neatly abstracts a lot of the work involved.

Basically, it takes parameters matching the assorted callbacks from the parser declarations and makes a coderef out of it all.

Currently recognized callbacks are:

- •

  on\_match

- •

  on\_fail

- •

  preprocess

- •

  postprocess

### Methods for subclassing

These are methods you should define when writing your own subclass.

**Note**: these methods do not exist in this class. There is no point trying to call `"$self->SUPER::do_match( ... )"`.

*do\_match*

`"do_match"` is the first phase. Arguments are the date and `@args`. `"self"`, `"label"`, `"args"`. Return value must be defined if you match successfully.

*post\_match*

`"post_match"` is called after the appropriate callback out of `"on_match"`/`"on_fail"` is done. It's passed the date, the return value from `"do_match"` and the parsing hash.

Its return value is used as the `"post"` argument to the `"postprocess"` callback, and as the second argument to `"make"`.

*make*

`"make"` takes the original input, the return value from `"post_match"` and the parsing hash and should return a `"DateTime"` object or undefined.

### Delegations

For use of `"Parser"`, this module also delegates `"valid_params"` and `"params"`. This is just convenience to save typing the following:

```
    DateTime::Format::Builder::Parser->valid_params(...)
```

Instead we get to type:

```
    $self->valid_params(...);
    __PACKAGE__->valid_params(...);
```

## WRITING A SUBCLASS

Rather than attempt to explain how it all works, I think it's best if you take a look at *Regex.pm* and *Strptime.pm* as examples and work from there.

## SEE ALSO

`"datetime@perl.org"` mailing list.

http://datetime.perl.org/

perl, DateTime, DateTime::Format::Builder, DateTime::Format::Builder::Parser.

## SUPPORT

Bugs may be submitted at \<https://github.com/houseabsolute/DateTime-Format-Builder/issues\>.

I am also usually active on IRC as 'autarch' on `"irc://irc.perl.org"`.

## SOURCE

The source code repository for DateTime-Format-Builder can be found at \<https://github.com/houseabsolute/DateTime-Format-Builder\>.

## AUTHORS

- •

  Dave Rolsky \<autarch@urth.org\>

- •

  Iain Truskett \<spoon@cpan.org\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2020 by Dave Rolsky.

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.
