use constant PER_LINE => 20; my @out; do { @out = (); while() { push @out, $_; last if not 1 .. PER_LINE; } chomp @out; print PIPE join ",", @out; print PIPE "\n" if @out; } until @out != PER_LINE;