sub match { shift =~ m/ (?| [^(]*\(([^)]*?)\) # Both parens. | \((.*)$ # Left paren. | ^(.*)\) # Right paren. | ^[^()]*()$ # No parens (empty capture). ) /x; return $1 // (); }