# This goop is so that we can use DateTime but pass in a string that gets coerced package BonusTypes; use Moose::Role; use Moose::Util::TypeConstraints; require DateTime; subtype 'DateTime' => as 'Object' => where { $_->isa('DateTime') }; coerce 'DateTime' => from 'Str' => via { require DateTime::Format::DateManip; DateTime::Format::DateManip->parse_datetime($_); }; 1;