use Attribute::Params::Validate qw(:all);
# takes named params (hash or hashref)
# foo is mandatory, bar is optional
sub foo : Validate( foo => 1, bar => 0 )
{
# insert code here
}
# takes positional params
# first two are mandatory, third is optional
sub bar : ValidatePos( 1, 1, 0 )
{
# insert code here
}
# for some reason Perl insists that the entire attribute be on one line
sub foo2 : Validate( foo => { type => ARRAYREF }, bar => { can => [ 'print', 'flush', 'frobnicate' ] }, baz => { type => SCALAR, callbacks => { 'numbers only' => sub { shift() =~ /^\d+$/ }, 'less than 90' => sub { shift() < 90 } } } )
{
# insert code here
}
# note that this is marked as a method. This is very important!
sub baz : Validate( foo => { type => ARRAYREF }, bar => { isa => 'Frobnicator' } ) method
{
# insert code here
}
Please see Params::Validate for more information on how you can specify what validation is performed.
This attribute corresponds to the "validate" subroutine in Params::Validate.
This attribute corresponds to the "validate_pos" subroutine in Params::Validate.
If you do not do this, then the object or class used in the method call will be passed to the validation routines, which is probably not what you want.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)