in reply to What's the better Perl style? Define parameters or not?

Which way is the common practice in Perl world?
The fast majority of code I see doesn't use prototypes, so not using prototypes is "common practice". But there's also a lot of code out there that doesn't use warnings or strict, so I wouldn't go by "common practice".

I won't recommend what you should do. I think you make yourself familiar with the pros and cons and make a decision what to use yourself - I think that's far more useful than making a tally of the responses and just follow the majority.

I will tell you why I don't use the $$$ prototype. Without prototypes, the following sub calls are equivalent:

sub foo {...}; my @a = (1, 2, 3); foo(1, 2, 3); foo(@a);
With prototypes, the second is an error:
sub bar ($$$) {...}; my @a = (1, 2, 3); bar(1, 2, 3); bar(@a); # Not enough arguments error
I find the non-flatting behaviour far more annoying than the benefit of the prototype checking the number of arguments.

That isn't to say I never use prototypes. A few prototypes have their benefits, IMO. They are: the empty prototype, the $ and _ prototypes (but only if it's just $ or _, nothing else with it), and prototypes starting with one or more &, \@ or \%, optionally followed by ;@. You need those prototypes to mimic calling conventions of certain build-ins. (Functions like lc, push and grep for instance).