W
%h = (q => '1');
qwe(%h)
Вы на самом деле делаете
qwe('q', 1) - это раскрытие параметров. Именно по этому не надо отдавать массивы и хеши как есть в вызов сабы.
Теперь если вы сделаете внтури сабы:
my ($qwe, %rest) = @_ - это работа со списочным контекстом. Вы просите раскрыться @_ в список, потом выбираете из него первый элемент в $qwe, а все остальное - в %rest (И если там будет нечетное количество аргументов - вам ругнутся). То есть больше одного хеша или массива в списке - бессмысленно.







