Yeah, but if you are only passing a couple of scalars, along with a single array (as in the original sub design), then passing by reference is not necessarily superior. It depends on what you are doing. Not passing by reference allows for more flexible calls to the sub:
in reply to Re^3: Global symbol requires explicit package name
in thread Global symbol requires explicit package name
scalar_and_array_sub($foo, $bar, @values[1..5]);
scalar_and_array_sub($foo, $bar, $value1, $value2, $value3);
scalar_and_array_sub($foo, $bar, split(/\s/, $string));
With pass by reference, these would have messier syntax.
When's the last time you used duct tape on a duct? --Larry Wall