The somewhat obscurely documented modifiers (g, I think, and one other ... and the pos function) that allow you to match regular expressions repeatedly in the same loop, do come in handy here. You can thereby do what split does but with much more control.
So, you can first determine that the desired substring does occur more than 5 times, then reset the search to start over (pos=undef;) and then start grabbing strings that occur “in front of” the desired delimiter.
The only thing that really bit me, the last time I was doing this, is that I failed to read perldoc -f pos closely enough.. I overlooked the highlighted part of this, and my code was ignoring the first character:
Returns the offset of where the last "m//g" search left off for the variable in question ($_ is used when the variable is not specified). Note that 0 is a valid match offset. "undef" indicates that the search position is reset. [...]
The technique works ... it works very well indeed ... but pay close attention to the edge-cases when testing it.