use List::Util 'reduce'; my @arr = ('A'..'L'); my $per_line = 2; my $on_this_line = 0; print reduce {$a . (++$on_this_line % $per_line ? ',' : "\n") . $b} @arr; #### my @arr = ('A'..'L'); my $sep = [',', "\n"]; print reduce {$a . ($sep->[@$sep] = shift @$sep) . $b} @arr;