Declare::Constraints::Simple::Library::Referencial - Ref Constraints
# 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;
This library contains those constraints that can test the validity of references
and their types.
Valid if the value is a reference of a kind in @types.
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);
The value is valid if the value is an array reference. The contents of the array
can be validated by passing an other $constraint as
argument.
The stack or path part of
"IsArrayRef" is
"IsArrayRef[$index]" where
$index is the index of the failing element.
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.
Code references have to be valid to pass this constraint.
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.
Declare::Constraints::Simple, Declare::Constraints::Simple::Library
Robert 'phaylon' Sedlacek
"<phaylon@dunkelheit.at>"
This module is free software, you can redistribute it and/or modify it under the
same terms as perl itself.