Используйте список или фрагмент массива.
sub parseheader { join(",", @_[ 1 .. $_[0] ]) . "\n" }
print parseheader(3, @things);
, но я бы использовал
sub take_first { @_[ 1 .. $_[0] ] }
say join ",", take_first(3, @things);
Если вы хотите удалить возвращенные элементы, вы можете использовать splice
.
say join ",", splice(@things, 0, 3);
Кстати,
for (my $i=0; $i < $grps_len; ++$i)
- медленный и сложный способ написания
for my $i (0..$grps_len-1)