$_ = q(aaa; ; bbb ; "ccc ; ddd ;" ee;e ";" fff ;); s/(".+;.+"|;)/$1 ne ';' ? $1 : '&&'/ge; #### aaa&& && bbb && "ccc ; ddd ;" ee;e ";" fff && #### ; " ; " ; " ; " ; #### $b = 0; $_ = q(aaa; ; bbb ; "ccc ; ddd ;" ee;e ";" fff ;); $a = join '', map {$b =!$b if /"/; s/;/'&&'/ unless $b; $_} split //; output: aaa&& && bbb && "ccc ; ddd ;" ee&&e ";" fff &&