On Fri, 28 Jan 2011 20:23:32 +0100, Jiří Pavlovský <j...@getnet.cz> wrote: > subtype 'Subject' > => as 'Str'; > > coerce 'Subject' > => from 'Str' > => via { > > my $sanitized = sanitize_input($_); > $sanitized; > > };
This will never fire. Every valid Str is already a valid Subject, so no coercion will run. Add a constraint to Subject. subtype 'Subject', as 'Str', where { is_clean($_) }; coerce 'Subject', from 'Str', via { sanitize($_) }; > subtype MaybeSubject => as 'Maybe[Subject]'; > coerce 'MaybeSubject' > => from 'Subject' > => via { > my $sanitized =sanitize_input($_); > $sanitized; > > }; This doesn't make any sense to me. hdp.