Hashes have no problem with combining marks.
$ perl -MData::Dumper -E' $Data::Dumper::Useqq = 1; $_ = "e\x{301}"; $h{$_} = 1; say $h{$_} || 0; ' 1
The problem is probably that the character appears both in composed and decomposed form.
$ perl -E' $Data::Dumper::Useqq = 1; $a = "e\x{301}"; $b = "\xE9"; $h{$a} = 1; say $h{$b} || 0; ' 0
You can use Unicode::Normalize's NFC or NFD to normalize the form. (Doesn't matter which, as long as you're consistent.)
$ perl -MUnicode::Normalize=NFC -E' $Data::Dumper::Useqq = 1; $a = NFC("e\x{301}"); $b = NFC("\xE9"); $h{$a} = 1; say $h{$b} || 0; ' 1
I'm kinda guessing here since you used 20 lines of code to describe a problem that could be described with 2.
In reply to Re: Unicode combining characters as hash keys?
by ikegami
in thread Unicode combining characters as hash keys?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |