Declare::Constraints::Simple::Library::Referencial(3pm)

Declare::Constraints::Simple::Library::Referencial3pm

Ref constraints

Usage

  # scalar or array references
  my $scalar_or_array = IsRefType( qw(SCALAR ARRAY) );
  # scalar reference
  my $int_ref = IsScalarRef( IsInt );
  # accept mappings of ids to objects with "name" methods
  my $id_obj_map = 
    IsHashRef( -keys   => IsInt,
               -values => And( IsObject,
                               HasMethods('name') ));
  # an integer list
  my $int_list = IsArrayRef( IsInt );
  # accept code references
  my $is_closure = IsCodeRef;
  # accept a regular expression
  my $is_regex = IsRegex;

Overview

This library contains those constraints that can test the validity of references and their types.

Constraints

IsRefType(@types)

Valid if the value is a reference of a kind in @types.

IsScalarRef($constraint)

This is true if the value is a scalar reference. A possible constraint for the scalar references target value can be passed. E.g.

  my $test_integer_ref = IsScalarRef(IsInt);

IsArrayRef($constraint)

The value is valid if the value is an array reference. The contents of the array can be validated by passing another $constraint as argument.

The stack or path part of "IsArrayRef" is "IsArrayRef[$index]" where $index is the index of the failing element.

IsHashRef(-keys => $constraint, -values => $constraint)

True if the value is a hash reference. It can also take two named parameters: "-keys" can pass a constraint to check the hashes keys, "-values" does the same for its values.

The stack or path part of "IsHashRef" looks like "IsHashRef[$type $key]" where $type is either "val" or "key" depending on what was validated, and $key being the key that didn't pass validation.

IsCodeRef()

Code references have to be valid to pass this constraint.

IsRegex()

True if the value is a regular expression built with "qr". Note however, that a simple string that could be used like "/$rx/" will not pass this constraint. You can combine multiple constraints with And(@constraints) though.

Releases

4 releases since Debian 10 (Buster); the text changed 1 time.

  1. 10
  2. 11–13

Author

Robert 'phaylon' Sedlacek "<[email protected]>"

From libdeclare-constraints-simple-perl 0.03-1.1 in Debian 13 (Trixie). Parsed by carta from the page's man source.