in reply to Re: My coding guidelines
in thread My coding guidelines

You can't use prototypes to have the compiler check whether an argument is an integer, or an object of a certain type. Prototypes are less useful than you might think at first, and they are sometimes bloody nasty. The following doesn't do what you want:
sub foo ($$) {....} my @bar = (1, 2); foo @bar;
&foo isn't called with two arguments - even while @bar has two elements. Remove the prototype, and it will work as expected.