in reply to Repairing bad CSV

Though this does not do exactly what you asked for I think it will do what you meant. That is change any quote that is preceded by something not that is not a comma (thus avoiding the first quoted thing on the string.), but then has to either be followed by something other than "the end of line or before the newline at the end or a comma".
use strict; use warnings; while ( <DATA> ) { s/([^,])"(?!,|$)/$1""/g; print $_; } __DATA__ "A","B"",""C","D","E" ""F", ,"G"" "HI"J"K"L","M" 1,2,3,"t"l"r",4,5,6

-enlil