A final point, i tried to move the subroutine definition below the code calling it (I like to keep all my subs at the bottom), but i get an error:
Can't call method "nForX" without a package or object reference at
./test.pl line 617.
It seems you'll need to add a forward declaration with the prototype in
order to move the sub definition below the calling code.
sub nForX(&@);
...
nForX {
print join ' ', @_;
} 3, \( @a, @b, @c );
...
sub nForX(&@) { #use of prototype here is actually irrelevant
#now, i.e. sub nForX {...} works the same
... }