in reply to Re^2: print command runs after call to subroutine
in thread print command runs after call to subroutine

Personally, I've found that in most situations I don't want subroutines to print out stuff, because having them print stuff makes it harder to suppress that output later, when rewriting the script.

Perl does not enforce the number of parameters anyway, so you can always write the following:

sub display { ... }; display(1,2); display(1,2,3,4);