while ($tmp =~ /\(((?:[^()])*?)\)/) { my $assert = $1; $assert =~ s/\|/\\\|/g; $tmp =~ s/\($assert\)/$1/; } ($tmp =~ /\(|\)/) ? print "Don't match.\n" : print "Match.\n";