#!/usr/bin/perl -w use strict; use Dumpvalue; my $dumper = new Dumpvalue; my @split_elms = map{chomp; my $line = $_; my @data = map{my $substr = $_; $substr =~ s/,/:innerc:/g; $line =~ s/\Q$_\E/$substr/;} $line =~ /("[^"]*")/g; @data = map{$_ =~ s/:innerc:/,/g; $_} split(/,/,$line); \@data;} ; $dumper->dumpValue(\@split_elms); exit; __DATA__ "one"," one,two",3,"a like b" 0,0,0,0 #### 0 ARRAY(0x81a89dc) 0 '"one"' 1 '" one,two"' 2 3 3 '"a like b"' 1 ARRAY(0x8151afc) 0 0 1 0 2 0 3 0