Is it done this way to allow the prototype to be checked at compile time?
>perl -c -e"sub t(\@) { @{$_[0]} = '!' } t($c?@a:@b); print @b;
Type of arg 1 to main::t must be array (not null operation) at -e line
+ 1, near "@b)"
-e had compilation errors.