perls $ - [0] erzeugt unerwartete Ergebnisse für Nicht-ASCII-Daten

9

Betrachten Sie die folgenden Eingabedaten in der Datei y.txt (codiert in UTF-8).

%Vor%

und eine Datei y.pl , die die beiden Eingabezeilen in ein Array einfügt und sie verarbeitet, wobei sie nach Teilstring-Startpositionen sucht.

%Vor%

Wenn ich perl y.pl < y.txt aufruft, bekomme ich

%Vor%

als Ausgabe. Allerdings würde ich erwarten, dass die letzte Zahl auch 2 ist, aber aus irgendeinem Grund verhält sich der zweite /.../ regexp anders. Was vermisse ich? Ich denke, es ist ein Problem mit der Kodierung, aber was auch immer ich versucht habe, ist mir nicht gelungen. Dies ist Perl 5.18.2.

    
lemzwerg 19.09.2016, 05:34
quelle

1 Antwort

2

Es scheint ein Fehler in 5.18 zu sein.

%Vor%

Ich kann keine Problemumgehung finden. Das Hinzufügen von utf8::downgrade($array[0]); oder utf8::downgrade($array[0], 1); funktioniert in dem Fall, den Sie vorgestellt haben, aber nicht mit den folgenden Daten oder anderen, wo das interpolierte Muster die Zeichen & gt; 255 enthält.

%Vor%

Es scheint, dass dies nur behoben werden kann, indem Sie Ihr Perl aktualisieren, was eigentlich ziemlich einfach ist. (Stellen Sie sicher, dass Sie es in einem anderen Verzeichnis als Ihrem System perl installieren, indem Sie den Anweisungen in INSTALL folgen!)

    
ikegami 19.09.2016, 14:56
quelle

Tags und Links