Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: List arguments of a method

by moritz (Cardinal)
on May 15, 2014 at 09:10 UTC ( #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 (Abbot) 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
Node Status?
node history
Node Type: note [id://1086122]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2016-12-09 11:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (150 votes). Check out past polls.