Can anyone explain what is mean by clustering and capturing?
Or even the difference between them?
I'm reading the docs and came across this.
This is for clustering, not capturing; it groups subexpressions like "()", but doesn't make backreferences as "()" does. So
@fields = split(/\b(?:a|b|c)\b/)
Capturing is storing the parenthesized portion of the match somewhere that you can refer back to it (as $1, or as an element of the list returned by a match, for example). Ordinary parentheses are capturing parentheses. Special parentheses (any that have a ? after the opening paren) are non-capturing. All parentheses group their contents.
We're not really tightening our belts, it just feels that way because we're getting fatter.