in reply to tr doesn't *really* use a list

tr/y is the transliteration operator, and only works on single characters. It does not use a Perl "list" per se, but you give it a bunch of characters, so it can be said to be a 'list' in the common sense.

Since it only works on single characters, you won't be able to get the one -> two-character mappings like that using it. You'll have to resort to something like this:

my %MAP = ( "\xE4" => 'ae', "\xE9" => 'e', "\xF6" => 'oe', "\xFC" => 'ue', ); my $mapfrom = join('|', map { quotemeta } keys %MAP); s/($mapfrom)/$MAP{$1}/eg;