in reply to Balancing braces without (??{})

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