Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Are prototypes evil?

by Aristotle (Chancellor)
on Sep 02, 2002 at 22:19 UTC ( #194645=note: print w/ replies, xml ) Need Help??


in reply to Are prototypes evil?

Prototypes are one of those things that you shouldn't use, unless you understand why you shouldn't use them. Consider

sub foo ($$) { print join " / ", map "'$_'", @_; } my @x = qw(a b); foo(@x);
This will print '2'. Not 'a' / 'b' as one might expect. Prototypes in Perl aren't. They would probably best be called "context coercion templates". A $ will coerce anything into a scalar. List/hash flattening no longer applies. When using a single ($), it's not too bad, but if you use prototypes for more parameters, you can easily surprise users of that function (including yourself). The only "prototype" I'd seriously consider is &, which lets me pass a bare(!) BLOCK that implicitly becomes a subref to a closure to the function.

Makeshifts last the longest.


Comment on Re: Are prototypes evil?
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (10)
As of 2014-12-18 22:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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





    Results (67 votes), past polls