NAME
perl5i::Signature - Representing what parameters a subroutine accepts
SYNOPSIS
func hello( $greeting, $place ) { say "$greeting, $place" }
my $code = \&hello;
my $signature = $code->signature;
say $signature->num_params; # 2
say $signature->is_method; # false
DESCRIPTION
A Signature is a representation of what parameters a subroutine accepts. Each subroutine defined with def
, func
or method
will have a signature associated with it. You can get at it by calling the signature
method on the code reference. See "Signature Introspection" in perl5i for more details.
Subroutines declared with Perl's built in sub
will have no signature.
METHODS
num_params
my $num_params = $sig->num_params;
The number of parameters the subroutine takes.
params
my $params = $sig->params;
An array ref of the parameters a subroutine takes in the order it takes them. Currently they are just strings. In the future they will be string overloaded objects.
as_string
my $params = $sig->as_string;
The original signature string.
invocant
my $invocant = $sig->invocant;
The invocant is the object or class a method is called on. invocant
will return the parameter which contains this, by default it is $self
on a method, and nothing a regular subroutine.
is_method
my $is_method = $sig->is_method;
Returns if the subroutine was declared as a method.
OVERLOADING
Signature objects are string overloaded to return as_string
. They are also always true to avoid objects taking no parameters from being confused with subroutines with no signatures.