Да, для переменных параметров требуется символ @:
sub SHOUT(*@a) {
print @a>>.uc;
}
Хотя это обманывает ваш вопрос, потому что @a теперь является формальным параметром, а не просто переменной. Только для реальных переменных скаляры могут делать все, что вам нужно, хотя зачастую с большим усилием, чем если вы используете соответствующий символ.