Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

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?

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2015-11-30 23:36 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (788 votes), past polls