while () { my @tok; while (s/^([A-Z][a-z]?|[0-9])//) { push @tok, $1; } print join('-', @tok), "\n"; } __DATA__ TTh7 MF4 ThF1 Results T-Th-7 M-F-4 Th-F-1