Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
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


Comment on Re: List arguments of a method
Download Code
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 the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2014-12-28 19:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (182 votes), past polls