note
davido
<p>You can't really safely apply a set of capitalization rules to a person's name. You pretty much have to take it as they write it. And when you lose that information, you can't re-generate it. [https://blog.apastyle.org/apastyle/2012/02/how-to-capitalize-author-names-in-apa-style.html#:~:text=For%20most%20author%20names%20this,'%2C%20van%2C%20or%20von.|How to capitalize author names] describes that de, d', van, and von may not be capitalized. So James Van Den Berghe could be spelled as I have done, or it could be James van den Berghe, or there could be some other magic combination. And some names defy all conventions.</p>
<p>For your problem statement I would do this:</p>
<c>
#!/usr/bin/env perl
use strict;
use warnings;
my @names = (
'VAN DEN BERGHE',
'OSWALD',
'ANDERSON',
'LLOYD-WRIGHT',
);
foreach my $name (@names) {
my $altered = join('', map {ucfirst(lc($_))} split /(\s+|-)/, $name);
print "$name => $altered\n";
}
</c>
<p>which produces:</p>
<c>
VAN DEN BERGHE => Van Den Berghe
OSWALD => Oswald
ANDERSON => Anderson
LLOYD-WRIGHT => Lloyd-Wright
</c>
<p>But that doesn't make any attempt at dealing with the nuances discussed above.</p>
<div class="pmsig"><div class="pmsig-281137">
<br /><p>Dave</p>
</div></div>
11117653
11117653