# Input @terms = qw/Genetics Genomics phylogeny allele ChromosomeLocusLink geneExpression RasSignalTransductionPathway/; foreach my $words (@terms) { my @wordlist = $words =~ /(?:(.+?[a-z])([A-Z].+))+/g; } # Desired Result @separated_terms = qw/Genetics Genomics phylogeny allele Chromosome Locus Link gene Expression Ras Signal Transduction Pathway/; #### # does not work - removes last lowercase and first uppercase letter at each boundary # my @wordlist = split /[a-z][A-Z]/, $words; # does not work - only separates the last term from the list my @wordlist = $words =~ /(?:(.+?[a-z])([A-Z].+))+/g;