To clarify what is meant here: in the regular expression syntax, parentheses normally imply grouping in the sense that you can subsequently extract the substring that matched that particular group. In the case at bar, if the result is True, the special-variable $1 will contain what matched the first group, $2 the second group (if any), and so on. So, $1 would contain one of: int, char, bool, long.
If you don't need to know what matched, the ?: construct tells the regular-expression parser that you're using the parentheses only to express a set of alternatives; that you don't need to subsequently use $1 and so-on. So, Perl won't bother to populate those variables (at least for that group...), and this saves time. You'll know whether or not the expression matched, but you won't know exactly what matched that group.