Wrong on several accounts:
- It doesn't count leading whitespace.
- It counts non-space whitespace as if it were a space.
- It only counts whitespace directly following non-whitespace.
- It doesn't actually split; the whitespace on which it should split is returned in $&.
- It doesn't actually split: it only returns one substring; if you were to fix this by adding /g, whitespace following the "11"th one will be lost.
- It only matches chunks that actually have an 11th space. If $str would contain only 5 spaces, the match fails; a split would still return something.
Better would be (untested):
@chunks = $str =~ /((?:[^ ]* ){10}[^ ]*|.+)/gs;
but even that isn't quite split.