$_ = "{a}{{b}}{{c}{{d}}}"; ($re=$_)=~s/((\{)|(\})|.)/${['(','']}[!$2]\Q$1\E${[')','']}[!$3]/gs; @$ = (eval{/$re/},$@); print join"\n",@$ unless $$[-1]=~/unmatched/;