Вы не можете. Когда вы возвращаете что-то из подпрограммы, Perl возвращает список. Нет информации о том, сколько элементов находится в массиве, прежде чем он выйдет из подпрограммы.
Списки плоские в Perl. Они не могут быть вложенными.
(1, 2, (3, 4), ((), 5, (6)), 7)
Это эквивалентно:
(1, 2, 3, 4, 5, 6, 7)
((1), (2), (3), (4), (5), (6), (7))
Если вы хотите вернуть два разных массива, вам нужно вернуть ссылки на них.
sub foo {
my @bar = qw/a b c/;
my @qrr = qw/1 2 3/;
return \@bar, \@qrr;
}
my ($letters, $numbers) = foo();
Затем вы можете разыменовать их в переменные массива или получить к ним доступ напрямую.
См. perlreftut и perlref для получения дополнительной информации о ссылках.