in reply to UTF8 hash key downgraded when assigned
Just like Perl is free to store numbers in the format of its choice (IV, UV, NV, PV), Perl is free to store strings in the format of its choice (UTF8=0, UTF8=1). It's also it's free to change the storage format used at any time, but that's not what's happening here. Consider the following snippet
use utf8; utf8::upgrade( my $key_u = "clé" ); utf8::downgrade( my $key_d = "clé" ); my %hash; ++$hash{$key_u}; ++$hash{$key_d}; my ($key) = keys(%hash);
As this shows, keys is perfectly justified in returning the string in any format. If your code assigns semantics to the UTF8 flag, it's buggy. (It is said "to suffer from The Unicode Bug".)
|
|---|