my @transposed; while (my $row = $csv->getline($FILE1)) { for (0..$#$row) { push @{ $transposed[$_] }, $row->[$_]; } } $csv->print($FILE2, $_) for @transposed;