---
name: "MooseX::Meta::TypeConstraint::ForceCoercion"
section: "3pm"
platform: "linux"
package: "libmoosex-meta-typeconstraint-forcecoercion-perl"
version: "0.01-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MooseX::Meta::TypeConstraint::ForceCoercion"
---

# MooseX::Meta::TypeConstraint::ForceCoercion(3pm)

Force coercion when validating type constraints

## NAME

MooseX::Meta::TypeConstraint::ForceCoercion - Force coercion when validating type constraints

## VERSION

version 0.01

## SYNOPSIS

```
    use MooseX::Types:::Moose qw/Str Any/;
    use Moose::Util::TypeConstraints;
    use MooseX::Meta::TypeConstraint::ForceCoercion;
    # get any type constraint
    my $tc = Str;
    # declare one or more coercions for it
    coerce $tc,
        from Any,
        via { ... };
    # wrap the $tc to force coercion
    my $coercing_tc = MooseX::Meta::TypeConstraint::ForceCoercion->new(
        type_constraint => $tc,
    );
    # check a value against new type constraint. this will run the type
    # coercions for the wrapped type, even if the value already passes
    # validation before coercion. it will fail if the value couldn't be
    # coerced
    $coercing_tc->check('Affe');
```

## DESCRIPTION

This class allows to wrap any `"Moose::Meta::TypeConstraint"` in a way that will force coercion of the value when checking or validating a value against it.

## ATTRIBUTES

### type\_constraint

The type constraint to wrap. All methods except for `"validate"` and `"check"` are delegated to the value of this attribute.

## METHODS

### check ($value)

Same as `"Moose::Meta::TypeConstraint::check"`, except it will always try to coerce `$value` before checking it against the actual type constraint. If coercing fails the check will fail, too.

### validate ($value, $coerced\_ref?)

Same as `"Moose::Meta::TypeConstraint::validate"`, except it will always try to coerce `$value` before validating it against the actual type constraint. If coercing fails the validation will fail, too.

If coercion was successful and a `$coerced_ref` references was passed, the coerced value will be stored in that.

## AUTHOR

```
  Florian Ragwitz <rafl@debian.org>
```

## COPYRIGHT AND LICENSE

This software is copyright (c) 2009 by Florian Ragwitz.

This is free software; you can redistribute it and/or modify it under the same terms as perl itself.
