depending on the real details, you may have conned perl into thinking you wanted a prototype for your sub, causing a great weeping and gnashing of teeth.
prototypes are usually reviled, and look like
sub baz($$) {... real code ...}
the ($$) bit means baz will accept 2 scalar values only. If you have a 2 element array, it'll be forced into scalar context automagically (and autoevilly). If nothing's in the parens, the sub will take no arguments, no how.
here's some happy fun examples :
use strict;
sub foo ($) {return shift}
sub foo2 ($$) {return $_[0]+$_[1]}
sub foo3 () {100}
my @bax=(10,20);
print join "\n",foo 20,3, foo2 10,20;
print "\n";
print foo3;
print "\n";
print eval (foo2 @bax,1);
print "\n";
Update :
Well, I guess I shouldn't post things in the middle of the night without my thinking brain dog nearby, as this node probably makes no sense
unless one already knows about prototypes. The point of the post was to say "don't put code into a prototype", but I don't think that got communicated. To learn more about prototypes, hit
perlsub.