I want to replace all the o's in a string with x's or y's and all the
a's in a string with u's or v's.

Example: given string "foobar", the output would be this list of strings

fxxbur (change both o's to x, and the a to u)
fxxbvr (both o's to x, a to y)
fxybur (first o to x, second to y, and the a to u)
fxybvr (and so on...)
fyxbur
fyxbvr
fyybur
fyybvr

What's the best subroutine to do this? I've got some ideas, but
they're all fairly complex.

Reason I'm doing this (if anyone cares): I want to ASCII-ify the
geonames alternatenames table using iso-8859-1. Most of the
translations are obvious:

s/[\xc0-\xc5]/A/sg;
s/\xc6/AE/sg;
s/\xc7/C/sg;
s/[\xc8-\xcb]/E/sg;
s/[\xcc-\xcf]/I/sg;
s/\xd1/N/sg;
s/[\xd2-\xd6\xd8]/O/sg;
s/[\xd9-\xdc]/U/sg;
s/\xdd/Y/sg;
s/[\xe0-\xe5]/a/sg;
s/\xe6/ae/sg;
s/\xe7/c/sg;
s/[\xe8-\xeb]/e/sg;
s/[\xec-\xef]/i/sg;
s/\xf1/n/sg;
s/[\xf2-\xf6\xf8]/o/sg;
s/[\xf9-\xfc]/u/sg;
s/[\xfd\xff]/y/sg;

but "eth" can be translated as "d" or "dh", "thorn" can be translated
as "th" or "y", and "sharp s" can be translated as "ss" or "sz".

In all cases, I want to use *both* translations to have the largest
possible ASCII-ification.

-- 
We're just a Bunch Of Regular Guys, a collective group that's trying
to understand and assimilate technology. We feel that resistance to
new ideas and technology is unwise and ultimately futile.

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to