One other thing not mentioned so far. What you were told in the CB isn't quite right. A subroutine called without parentheses or & is a list operator (except in the special case where you use the () or ($) prototypes), which means that it can take any number of arguments:
sub foo {
# do stuff
}
foo 1, 2, 3, 4;
is perfectly valid.