2019-09-23T09:45:00
rostiDa können wir mal sehen wie verwirrend das ist was Perl macht. Mein Perl 6.16.3 jedenfalls betrachtet das Argument von chr() als Codepoint und nicht als Bytesequenz.
Ja, so steht es auch in der Dokumentation von
chr().
2019-09-23T09:45:00
rostiSo erzeugt
my $c = chr 0xC9; eine utf8kodierte Zeichenkette genauso wie das
pack "U", 0xC9; tut. Beide Zeichenketten sind gleich:
my $c = chr 0xC9;
my $p = pack "U", 0xC9;
print 1 if $c eq $p;
Dass ein
É innerhalb von Perl zwei verschiedene Darstellungen haben kann, braucht den Perl-Programmierer nicht zu kümmern. Wer will, kann sich mit
Devel::Peek die unterschiedlichen Interna ansehen, das führt aber oft zu Verwirrung anstelle von Klarheit. Als Strings gesehen ist es wieder klar: Ein
É ist ein
É.