use strict; use Text::CSV; my @lines=; my $csv = Text::CSV->new ({sep_char => ', ' }); my @AoA; for (@lines) { if (/^\((.+?)\).?/){my $con=$1; if ($csv->parse($con)) { my @fields = $csv->fields(); push @AoA,[@fields]; } else { warn "Line could not be parsed: $_\n"; } } } $"="//";for (@AoA){print "no_fields: $#$_ : @$_\n";} __DATA__ (101, '1997-02-25', 'S1', 31.00, NULL, 0.00, 'this becomes two fields, so no go', 5.11), (102, '1998-03-26', 'S1', 31.00, NULL, 0.00, 'this will remain one field', 6.11),