Perlentaucher: Frage zum Wiki-Artikel „Reguläre Ausdrücke“

problematische Seite

Das Script Reverse unter der Überschrift Suchen & Ersetzen mit Regulären Ausdrücken:


#!/usr/bin/perl
 
use strict;
use warnings;
 
my $Text = "Dieses Script dreht alle Wörter um";
$Text =~ s/(\w+)/reverse $1/ge;
 
print "$Text\n";

führte im gedit-Fenster zu folgender Asugabe:

seseiD tpircS therd ella Wöretr mu

Es ist sichtbar, dass das 'W' und das 'ö' nicht vertauscht wurden. Ich vermute einen Fehler dahinter und möchte ihn melden oder womöglich berichtigt werden, da ich einen Fehler gemacht haben könnte. Danke!

  1. problematische Seite

    my $Text = "Dieses Script dreht alle Wörter um"; $Text =~ s/(\w+)/reverse $1/ge;

    Es ist sichtbar, dass das 'W' und das 'ö' nicht vertauscht wurden. Ich vermute einen Fehler dahinter und möchte ihn melden oder womöglich berichtigt werden, da ich einen Fehler gemacht haben könnte.

    Wichtig wäre natürlich die Frage: in welchem Zeichensatz hast du dein Testscript gespeichert...

    1. problematische Seite

      Hallo beatovich,

      Wichtig wäre natürlich die Frage: in welchem Zeichensatz hast du dein Testscript gespeichert...

      Du meinst Zeichencodierung. Aber die Frage scheint berechtigt.

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
    2. problematische Seite

      Es handelt sich um die Zeichencodierung UTF-8 mit dem Zeilenende Unix/Linux.

      P. S. Selbstverständlich meinte ich, zu Beginn dieses Threads, dass die Ausgabe in einem Terminalfenster erfolgte und nur das Programm mit gedit erstellt wurde.

      1. problematische Seite

        Es handelt sich um die Zeichencodierung UTF-8 mit dem Zeilenende Unix/Linux.

        Perl verwendet dazu eine interne Kodierung, die solltest Du einschalten. Wenn UTF-8-kodierte Zeichen im Script selbst als Literale eingesetzt werden, genügt das Pragma use utf8;

        Beachte jedoch, dass vor der Ausgabe auf STDOUT die interne Kodierung wieder ausgeschaltet werden muss. Das geht z.B. mit einem use bytes; vor der print()-Anweisung.

        Siehe auch Encode.pm

        MfG

        1. problematische Seite

          Vielen Dank für die Auskunft! Nun bin ich wieder ein wenig schlauer.