NAME
Params::Validate::Array - provide an alternative version of Param::Validate's validate()
function which will return parameters as a list.
VERSION
Version 0.03
SYNOPSIS
This module's validate()
function is a replacement for the Params::Validate module's validate()
function, returning the arguments as a list, and not a hash as Params::Validate::validate() does.
This replacement validate()
requires the argument descriptor to be an array reference, not a hash reference as in Params::Validate::validate().
Examples:
sub
foo1 {
my
(
$a
,
$b
,
$c
) = validate(
@_
,
# note the arrayref, not a hashref as in Params::Validate
[
a
=> 1,
# types of a, b, & c are
b
=> 0,
#+ unspecified. a is mandatory,
c
=> 0,
#+ b & c optional
]
);
"a = $a\n"
;
"b = "
,
$b
//
"undefined"
,
"\n"
;
"c = "
,
$c
//
"undefined"
,
"\n"
;
}
foo1(
a
=>
'hello'
,
c
=>
'there'
);
# prints:
# a = hello
# b = undefined
# c = there
foo1(
b
=> 1,
c
=>
'foo'
);
# throws error:
# "Mandatory parameter 'a' missing in call to main::foo1 ..."
}
sub
foo2 {
my
(
$x
,
$y
) = validate(
@_
,
# arrayref, not hashref
[
x
=> {
type
=> HASHREF,
optional
=> 1},
# hashref 'x' is optional,
y
=> {
type
=> SCALAR },
#+ scalar 'y' mandatory
]
);
$x
->{
$y
} =
'foo'
if
defined
$x
;
}
Note that if this module's validate()
function is called with a hashref argument descriptor, the behaviour reverts to that of Params::Validate::validate():
sub
foo3 {
my
%arg
= validate(
@_
,
# Note hashref
{
x
=> {
type
=> HASHREF,
optional
=> 1},
y
=> {
type
=> SCALAR },
}
);
"y arg is "
,
$arg
{y},
"\n"
;
...
}
EXPORT
Params::Validate::Array exports everything that Params::Validate does, including validate()
and validate_pos()
by default. The functions validate_with()
and validation_options()
as well as constants SCALAR
, ARRAYREF
, etc are also available for export. See Params::Validate for details.
Only the behaviour of validate()
is changed, and only when the argument descriptor is an arrayref. All other routines are identical to those in Params::Validate (Except for validation_options()
which will increment any stack_skip => ... argument to hide the extra layer of call stack).
SUBROUTINES/METHODS
my @args = validate(@_, [ descriptor ]);
In contrast to the validate()
subroutine in Params::Validate, which is called as:
my
%args
= validate(
@_
, { ... } );
(where the hashref argument {...}
is a descriptor for the subroutine arguments to be validated), the Params::Validate::Array::validate()
subroutine in this package is called as
my
(
$arg1
,
$arg2
, ...) = validate(
@_
, [ ... ] );
where the contents of the descriptor [...]
are identical to those in the hashref descriptor {...}
of the Params::Validate call.
In fact Params::Validate::Array::validate() is little more than a wrapper, and uses Params::Validate::validate() to do all the hard work.
AUTHOR
Sam Brain, <samb at stanford.edu>
BUGS
Please report any bugs or feature requests to bug-test at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
ACKNOWLEDGEMENTS
Thanks to Dave Rolsky for the Params::Validate and MooseX::Params::Validate modules, whose perl code and test suites I plagiarized shamelessly for this module.
LICENSE AND COPYRIGHT
Copyright 2011 Sam Brain.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.