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"; } #### qw(1.2.3 AAA BB AA B AA AAA BBB) qw(AA BB AAA B A BBB)