NAME
Sub::Spec::GetArgs::Array - Get subroutine arguments from array
VERSION
version 0.05
SYNOPSIS
use Sub::Spec::GetArgs::Array;
my $res = get_args_from_array(array=>\@ary, spec=>$spec, ...);
DESCRIPTION
This module provides get_args_from_array() (and gencode_get_args_from_array(), upcoming). This module is used by, among others, Sub::Spec::GetArgs::Argv and Sub::Spec::Wrapper.
This module uses Log::Any for logging framework.
This module's functions has Sub::Spec specs.
FUNCTIONS
None are exported by default, but they are exportable.
get_args_from_array(%args) -> [STATUS_CODE, ERR_MSG, RESULT]
Get subroutine arguments (%args) from array.
Using information in sub spec's ~args~ clause (particularly the ~arg_pos~ and ~arg_greedy~ arg type clauses), extract arguments from an array into a hash \%args, suitable for passing into subs.
Example:
: my $spec = { : summary => 'Multiply 2 numbers (a & b)', : args => { : a => ['num*' => {arg_pos=>0}], : b => ['num*' => {arg_pos=>1}], : } : }
then ~get_args_from_array(array=>[2, 3], spec=>$spec)~ will produce:
: [200, "OK", {a=>2, b=>3}]
Returns a 3-element arrayref. STATUS_CODE is 200 on success, or an error code between 3xx-5xx (just like in HTTP). ERR_MSG is a string containing error message, RESULT is the actual result.
Arguments (*
denotes required arguments):
allow_extra_elems => bool (default
0
)Allow extra/unassigned elements in array.
If set to 1, then if there are array elements unassigned to one of the arguments (due to missing ~arg_pos~, for example), instead of generating an error, the function will just ignore them.
array* => array
spec* => hash
SEE ALSO
AUTHOR
Steven Haryanto <stevenharyanto@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.