# phpman > man > Specio::Library::Builtins(3pm)

## NAME
    [Specio::Library::Builtins](https://www.chedong.com/phpMan.php/perldoc/Specio%3A%3ALibrary%3A%3ABuiltins/markdown) - Implements type constraint objects for Perl's built-in types

## VERSION
    version 0.47

## DESCRIPTION
    This library provides a set of types parallel to those provided by Moose.

    The types are in the following hierarchy

      Item
          Bool
          Maybe (of `a)
          Undef
          Defined
              Value
                  Str
                      Num
                          Int
                      ClassName
              Ref
                  ScalarRef (of `a)
                  ArrayRef (of `a)
                  HashRef (of `a)
                  CodeRef
                  RegexpRef
                  GlobRef
                  FileHandle
                  Object

### Item
    Accepts any value

### Bool
    Accepts a non-reference that is "undef", an empty string, 0, or 1. It also accepts any object
    which overloads boolification.

  Maybe (of `a)
    A parameterizable type which accepts "undef" or the type "`a". If not parameterized this type
    will accept any value.

### Undef
    Only accepts "undef".

### Value
    Accepts any non-reference value.

### Str
    Accepts any non-reference value or an object which overloads stringification.

### Num
    Accepts nearly the same values as "[Scalar::Util::looks_like_number](https://www.chedong.com/phpMan.php/perldoc/Scalar%3A%3AUtil%3A%3Alookslikenumber/markdown)", but does not accept numbers
    with leading or trailing spaces, infinities, or NaN. Also accepts an object which overloads
    numification.

### Int
    Accepts any integer value, or an object which overloads numification and numifies to an integer.

### ClassName
    Accepts any value which passes "Str" where the string is a loaded package.

### Ref
    Accepts any reference.

  ScalarRef (of `a)
    Accepts a scalar reference or an object which overloads scalar dereferencing. If parameterized,
    the dereferenced value must be of type "`a".

  ArrayRef (of `a)
    Accepts a array reference or an object which overloads array dereferencing. If parameterized,
    the values in the arrayref must be of type "`a".

  HashRef (of `a)
    Accepts a hash reference or an object which overloads hash dereferencing. If parameterized, the
    values in the hashref must be of type "`a".

### CodeRef
    Accepts a code (sub) reference or an object which overloads code dereferencing.

### RegexpRef
    Accepts a regex object created by "qr//" or an object which overloads regex interpolation.

### GlobRef
    Accepts a glob reference or an object which overloads glob dereferencing.

### FileHandle
    Accepts a glob reference which is an open file handle, any "[IO::Handle](https://www.chedong.com/phpMan.php/perldoc/IO%3A%3AHandle/markdown)" Object or subclass, or
    an object which overloads glob dereferencing and returns a glob reference which is an open file
    handle.

### Object
    Accepts any blessed object.

## SUPPORT
    Bugs may be submitted at <<https://github.com/houseabsolute/Specio/issues>>.

    I am also usually active on IRC as 'autarch' on "irc://irc.perl.org".

## SOURCE
    The source code repository for Specio can be found at <<https://github.com/houseabsolute/Specio>>.

## AUTHOR
    Dave Rolsky <<autarch@urth.org>>

## COPYRIGHT AND LICENSE
    This software is Copyright (c) 2012 - 2021 by Dave Rolsky.

    This is free software, licensed under:

      The Artistic License 2.0 (GPL Compatible)

    The full text of the license can be found in the LICENSE file included with this distribution.

