Provided by: libtype-tie-perl_0.015-1_all bug

NAME

       Type::Tie - tie a variable to a type constraint

SYNOPSIS

       Type::Tie is a response to this sort of problem...

          use strict;
          use warnings;

          {
             package Local::Testing;
             use Moose;
             has numbers => ( is => "ro", isa => "ArrayRef[Num]" );
          }

          # Nice list of numbers.
          my @N = ( 1, 2, 3, 3.14159 );

          # Create an object with a reference to that list.
          my $object = Local::Testing->new(numbers => \@N);

          # Everything OK so far...

          # Now watch this!
          push @N, "Monkey!";
          print $object->dump;

          # Houston, we have a problem!

       Just declare @N like this:

          use Type::Tie;
          use Types::Standard qw( Num );

          ttie my @N, Num, ( 1, 2, 3, 3.14159 );

       Now any attempt to add a non-numeric value to @N will die.

DESCRIPTION

       This module exports a single function: "ttie". "ttie" ties a variable to a type constraint, ensuring that
       whatever values stored in the variable will conform to the type constraint. If the type constraint has
       coercions, these will be used if necessary to ensure values assigned to the variable conform.

          use Type::Tie;
          use Types::Standard qw( Int Num );

          ttie my $count, Int->plus_coercions(Num, 'int $_'), 0;

          $count++;            # ok
          $count = 2;          # ok
          $count = 3.14159;    # ok, coerced to 3
          $count = "Monkey!";  # dies

       While the examples in documentation (and the test suite) show type constraints from Types::Standard, but
       any type constraint objects supporting the Type::API interfaces should work. This includes:

       •   Moose::Meta::TypeConstraint / MooseX::Types

       •   Mouse::Meta::TypeConstraint / MouseX::Types

       •   Specio

       •   Type::Tiny

   About Cloning with Storage::dclone (and Clone::clone)
       Cloning  variables  with  Storage::dclone  works,  but cloning with Clone::clone is not possible. See Bug
       #127576         for          Type-Tie:          Doesn't          work          with          Clone::clone
       <https://rt.cpan.org/Public/Bug/Display.html?id=127576>

BUGS

       Please report any bugs to <http://rt.cpan.org/Dist/Display.html?Queue=Type-Tie>.

SUPPORT

       IRC:     support     is     available     through    in    the    #moops    channel    on    irc.perl.org
       <http://www.irc.perl.org/channels.html>.

SEE ALSO

       Type::API, Type::Utils, Moose::Manual::Types, MooseX::Lexical::Types.

AUTHOR

       Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE

       This software is copyright (c) 2013-2014, 2018-2019 by Toby Inkster.

       This is free software; you can redistribute it and/or modify it under  the  same  terms  as  the  Perl  5
       programming language system itself.

DISCLAIMER OF WARRANTIES

       THIS  PACKAGE  IS  PROVIDED  "AS  IS"  AND  WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
       LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

perl v5.32.1                                       2021-02-07                                     Type::Tie(3pm)