package Thing; use Moose; use Moose::Util::TypeConstraints qw{ enum }; has delete => (is => 'ro', isa => enum([qw[ yes no ]]), init_arg => undef, lazy => 1, builder => '_build_delete'); has _delete => (is => 'ro', isa => 'Bool', init_arg => 'delete'); sub _build_delete { my ($self) = @_; $self->_delete ? 'yes' : 'no' }