for( 'sue,fred,x(mary,jane)', 'x(a,b),c(d,e,f),g,h,i(j,k)', 'a,b,cdef(g),h,i(j)' ) { print join' | ', m/( [^,(]+ \( [^)]+ \) | [^,]+ )(?:$|,)/gx; };; sue | fred | x(mary,jane) x(a,b) | c(d,e,f) | g | h | i(j,k) a | b | cdef(g) | h | i(j)