Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: List arguments of a method

by moritz (Cardinal)
on May 15, 2014 at 09:10 UTC ( [id://1086122]=note: print w/replies, xml ) Need Help??


in reply to List arguments of a method

I want to list the arguments of allVars that is - $no1, $no2, $name1 and $name2.

In the usual Perl nomenclature, the arguments are simply the values that are passed in, and those can be found in @_.

Perl 5 doesn't (yet) support formal parameter lists / signatures of subroutines, so you can't introspect them.

Perl 6 exposes signatures as objects, and allows you introspect that parameter list:

$ perl6-m -e 'sub f($x, $a, $b) { }; say &f.signature.params.perl' (Any $x, Any $a, Any $b).list $ perl6-m -e 'sub f($x, $a, $b) { }; say &f.signature.params[1].name' $a $ perl6-m -e 'sub f($x, $a, $b) { }; say &f.signature.params[1].type.^ +name' Any

Replies are listed 'Best First'.
Re^2: List arguments of a method
by tobyink (Canon) on May 15, 2014 at 09:27 UTC

    "Perl 6 exposes signatures as objects, and allows you introspect that parameter list"

    FYI, the Kavorka signature syntax and introspection API shown in my answer is very much inspired by Perl 6.

    Your example:

    $ perl6-m -e 'sub f($x, $a, $b) { }; say &f.signature.params[1].name' $a

    ... translates to:

    perl -MKavorka -E'fun f($x, $a, $b){ }; say Kavorka->info(\&f)->signat +ure->params->[1]->name'

    My policy was generally, "if in doubt, do things like Perl 6".

    I do really need to experiment with blessing coderefs, allowing things like: (\&f)->signature to "just work".

    use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1086122]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2024-03-28 17:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found