split /(?<=")\s*,\s*(?=")/, $string #### 0 '"title"' 1 '"Some Name, "some wierd title""' 2 '"555-555-5555"' #### my @fields = map { s/^"(.*)"\z/$1/; $_ } split /(?<=")\s*,\s*(?=")/, $string;