Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Predefining sub Parameters

by moot (Chaplain)
on Jun 22, 2005 at 17:29 UTC ( #469107=note: print w/ replies, xml ) Need Help??


in reply to Predefining sub Parameters

If you want to provide a compile-time check that parameters passed to a function are of the correct type, use a prototype:

sub functionname($@$) { ... }
The problem with this example is that perl flattens the @ and second $ parameter into one list, so your function wouldn't know where the second parameter (the @) ends.

There are some techniques in the cookbook and other literature that you might want to investigate, such as mimicking behaviour of built-ins with function prototypes. Some of these techniques can be used to alleviate the problem I've identified above.

You may also think about having your function accept only a hash (actually, a list of arguments your function will treat as a hash), and requiring callers to use named parameters:

sub functionname { my %hash = @_; # Validate keys of hash here } functionname(param1 => 1, param2 => 2, ...);
Did I mention There's More Than One Way To Do It? ;)

Now hiring in Atlanta. /msg moot for details.


Comment on Re: Predefining sub Parameters
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (11)
As of 2015-07-06 16:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (77 votes), past polls