in reply to split by a capital followed by

Use a lookahead:
my @names = split /(?=[A-Z])/;
That will give you an undef first item, because it matches at the beginning as well as at the end. Adding a lookbehind will solve that:
my @names = split /(?<=.)(?=[A-Z])/;

Caution: Contents may have been coded under pressure.