use utf8;
use Text::Unidecode qw(unidecode);
sub short {
my @s = split ' ', (lc unidecode($_[0]) =~ tr/-//dr);
$s[0] = substr $s[0], 0, 1;
return join '', @s;
}
sub long {
return lc unidecode($_[0]) =~ tr/ /./r =~ tr/-//dr
}
printf "%s\t%s\t%s\n", $_, short($_), long($_) for (
'Ævar Arnfjörð Bjarmason',
'Jérôme Mustermann',
'Max Maier',
'Rafaël Garcia-Suarez',
'Rafael van der Vaart',
'विश्वनाथन आनंद',
'周潤發',
);
I can guess what you're up to. Don't just create account names! During sign-up, give these transformed names out as a suggestion, then let people confirm/change them.