$_ = '12d.9j7h.7tttt.125.ty.2.4.8.9f.y6.34gk.ll'; print "split: ", map "[$_]", grep $_, split /((?:\w+.){3}\w+)\.?/; print "regex: ", map "[$_]", m< ( (?: \w+. ){3} \w+ ) \.? >xg; __output___ split: [12d.9j7h.7tttt.125][ty.2.4.8][9f.y6.34gk.ll] regex: [12d.9j7h.7tttt.125][ty.2.4.8][9f.y6.34gk.ll]