Sub::Meta::Parameters - meta information about parameters
use Sub::Meta::Parameters; my $p1 = Sub::Meta::Parameters->new( args => ['Str'] ); $p1->invocant; # => undef; $p1->invocants; # => []; $p1->positional; # => [Sub::Meta::Param->new('Str')] $p1->positional_required; # => [Sub::Meta::Param->new('Str')] $p1->positional_optional; # => [] $p1->named; # => [] $p1->named_required; # => [] $p1->named_optional; # => [] $p1->nshift; # => 0 $p1->slurpy; # => 0 $p1->args_min; # => 1 $p1->args_max; # => 1 my $x = Sub::Meta::Param->new({ type => 'Int', name => '$x', named => 1 }); my $y = Sub::Meta::Param->new({ type => 'Int', name => '$y', named => 1 }); my $p2 = Sub::Meta::Parameters->new( nshift => 1, args => [ 'ClassName', $x, $y ] ); $p2->invocant; # => Sub::Meta::Param->new('ClassName'); $p2->invocants; # => [Sub::Meta::Param->new('ClassName')]; $p2->positional; # => [] $p2->positional_required; # => [] $p2->positional_optional; # => [] $p2->named; # => [$x, $y] $p2->named_required; # => [$x, $y] $p2->named_optional; # => [] $p2->nshift; # => 1 $p2->slurpy; # => 0 $p2->args_min; # => 5 $p2->args_max; # => 0+'Inf'
Constructor of Sub::Meta::Parameters.
Sub::Meta::Parameters
my $p = Sub::Meta::Parameters->new( args => ['Str'], # required. arguments nshift => 0, # optional. number of shift arguments slurpy => 0, # optional. whether get all rest arguments );
Subroutine arguments arrayref.
Setter for subroutine arguments. An element can be an argument of Sub::Meta::Param or any object which has positional,named,required and optional methods.
Sub::Meta::Param
positional
named
required
optional
Number of shift arguments.
Setter for nshift. For example, it is assumed that 1 is specified in the case of methods, and 0 is specified in the case of normal functions.
A boolean whether get all rest arguments.
Setter for slurpy.
Returns an arrayref of parameter objects for the positional arguments.
Returns an arrayref of parameter objects for the required positional arguments.
Returns an arrayref of parameter objects for the optional positional arguments.
Returns an arrayref of parameter objects for the named arguments.
Returns an arrayref of parameter objects for the required named arguments.
Returns an arrayref of parameter objects for the optional named arguments.
First element of invocants.
Returns an arrayref of parameter objects for the variables into which initial arguments are shifted automatically. This will usually return () for normal functions and ('$self') for methods.
Returns the minimum number of required arguments.
This is computed as follows: Invocants and required positional parameters count 1 each. Optional parameters don't count. Required named parameters count 2 each (key + value). Slurpy parameters don't count either because they accept empty lists.
Returns the maximum number of arguments.
This is computed as follows: If there are any named or slurpy parameters, the result is Inf. Otherwise the result is the number of all invocants and positional parameters.
A boolean value indicating whether Sub::Meta::Parameters object is same or not. Specifically, check whether args, nshift and slurpy are equal.
args
nshift
slurpy
Function::Parameters::Info.
The methods in this module are almost copied from the Function::Parameters::Info methods.
Function::Parameters::Info
Copyright (C) kfly8.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
kfly8 <kfly@cpan.org>
To install Sub::Meta, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Sub::Meta
CPAN shell
perl -MCPAN -e shell install Sub::Meta
For more information on module installation, please visit the detailed CPAN module installation guide.