use strict; use warnings; my @strs = ('1.2.3AAABB,AAB,AA,AAABBB', 'AABB,AAAB,ABBB'); for (@strs) { my @parts = /((?:\d+\.?)+ | A+ | B+)/gx; print "qw(", join (' ', @parts), ")\n"; }