http://qs321.pair.com?node_id=749309


in reply to CSV manipulation with perl

Following your approach, I came with the following code that creates one array with all the strings that result from the concatenation of all the columns. Note that I'm not taking into account eventual memory problems that may arise from the amount of columns/lines your csv may have.

use strict; use warnings; use Data::Dumper; my @parsed = (); while (<DATA>) { my $in = $_; chomp($in); my @line = split(/,/, $in); for my $i(0..$#line) { $parsed[$i] .= $line[$i].'|'; } } map {chop} @parsed; print Dumper(\@parsed); __DATA__ 123,"text",66,"more text" 124,"text1",67,"more text1" 125,"text2",68,"more text2"

outputs

$VAR1 = [ '123|124|125', '"text"|"text1"|"text2"', '66|67|68', '"more text"|"more text1"|"more text2"' ];