Wrong. You're talking about the
\@ prototype, which makes Perl insist on seeing a
@ sigil, and automatically takes a reference to that array before passing it to the function. You can still pass in lists by way of a construct like
@{[foo_list()]}. It's exactly the same situation as with
push et al.
Makeshifts last the longest.