$csv = "test.csv"; open(DAT, $csv) || die("Cannot Open File"); while () { my @new = (); push(@new, $+) while $_ =~ m{ "([^\"\\]*(?:\\.[^\"\\]*)*)",? | ([^,]+),? | , }gx; push(@new, undef) if substr($_, -1,1) eq ','; my $string = format_string(@new); my $query = qq{Insert into person_info VALUES ($string)}; print $query, "\n"; } sub format_string { my $string; foreach (@_) { if (/[^\d]/) { $string .= qq{"$_",}; } else { $string .= qq{$_,}; } } return substr($string, 0, -1); }