in reply to Re: subroutine prototypes still bad?
in thread subroutine prototypes still bad?

The way I put it is that prototypes let you write routines that act more like some of perl's built-ins. For example, you might want to write something that acts like this:
# deal from the middle of the deck my $card = pop_random( @deck );

And the real trouble with writing code like this is simply that it doesn't behave like regular perl code. A non-perl expert reading that line of code is likely to feel a vague sense of disquiet, a sense that they don't quite know what's going on. A perl expert reading it is going to immediately want to see the definition of pop_random, to make sure the prototype was used right.

On the other hand, the slightly uglier semantics of pop_random( \@deck ); is much less likely to throw anyone off.

(And yes, it's unfortunate that these were called "prototypes": I didn't understand what they were for a long time, because I expected them to be hints to the compiler to help catch errors if the wrong kind or arguments were passed.)