balanced_delimiters('(\a)', '(', ')', "\\") #### sub balanced_delimiters { local $_ = shift; my %sub; @sub{@_} = ("(",")"); my $LRS=join'|',map quotemeta,@_; $LRS .= "($LRS)"; {local $^W=0;s/($LRS|.)/$sub{$1}/gs; eval{m/$_/} } return !$@; }