in reply to function calling

The problem is, as you appear to have noticed, down to the order of calling and declaring the function.

If the declaration precedes any call, perl already knows that print_argu arg,...; is a call to a sub, whereas if the order is reversed i.e. the call precedes the declaration, perl needs a hint as to what sort of symbol print_argu represents. In this case, the hint can be either...

i.e. either of the following will work
print_argu("Hello function!\n"); sub print_argu{ print "@_\n"; }
or
sub print_argu; print_argu "Hello function!\n"; sub print_argu{ print "@_\n"; }

That being said, it is recommended, in PBP, that the parens are omitted only for calls to builtins.

A user level that continues to overstate my experience :-))