Versionen dieses Beitrags

Wiki: Fehler auf der Regex-Seite

Nosferatu Orlok
  • Wiki: Fehler auf der Regex-Seite
  • Hallo pl,
  • > Du brauchst mir die Doku nicht abzutippen, lesen kann ich selber.
  • Dann tu das auch!
  • > > Ist er mit dem Ändern in die Formulierung "mit dem Setzen des utf8-Pragmas" korrekter?
  • >
  • > Nein. `use utf8` bewirkt, dass der Interpreter die in der Script-Datei notierten Literale als "utf-8-kodierte Zeichenketten" betrachtet und nicht als Bytesequenzen -- Das ist das Wesentliche und das gibt die Doku nicht her.
  • Das ist Unsinn. Das `ut8`-Pragma bewirkt, dass **der gesamte Quelltext** als UTF-8 interpretiert wird. Kleines Beispiel gefällig?
  • ~~~perl
  • #!/usr/bin/perl -w
  • use strict;
  • my $äöü = 1;
  • print $äöü, "\n";
  • ~~~
  • Dieses Programm sagt bei der Ausführung:
  • ~~~
  • Can't use global $� in "my" at test.pl line 6, near "my $�"
  • Unrecognized character \xA4; marked by <-- HERE after my $�<-- HERE near column 6 at test.pl line 6.
  • ~~~
  • Dagegen dieses Programm:
  • ~~~perl
  • #!/usr/bin/perl -w
  • use strict;
  • use utf8;
  • my $äöü = 1;
  • print $äöü, "\n";
  • ~~~
  • gibt erfolgreich `1` aus. Was du **vermutlich** meinst ist [`use feature "unicode_strings"`](https://perldoc.perl.org/feature.html#The-%27unicode_strings%27-feature), dass dem Compiler sagt, es soll Uniode-Regeln auf alle Strings und Regexe im aktuellen Scope anwenden. Das Gegenstück dazu ist dann [`use bytes`](http://perldoc.perl.org/bytes.html) (von dessen Verwendung abgeraten wird).
  • gibt erfolgreich `1` aus. Was du **vermutlich** meinst ist [`use feature "unicode_strings"`](https://perldoc.perl.org/feature.html#The-%27unicode_strings%27-feature), dass dem Compiler sagt, es soll Unicode-Regeln auf alle Strings und Regexe im aktuellen Scope anwenden. Das Gegenstück dazu ist dann [`use bytes`](http://perldoc.perl.org/bytes.html) (von dessen Verwendung abgeraten wird).
  • Auch das Beispiel aus deinem vorherigen Code ist falsch, es ist durchaus möglich ohne `use utf8` zu matchen:
  • ~~~perl
  • use strict;
  • print 'Ä' =~ /ä/ui;
  • ~~~
  • gibt erwartungsgemäß `1` aus. Und nein, `use utf8` ist nicht das gleiche wie `/u`.
  • > Ansonsten kann man ein Perl-Script in beliebigen Kodierungen abspeichern ohne dieses Pragma setzen zu müssen.
  • Gnhahahahaha. Dann erkläre mir bitte, wie du dieses Programm ausführen willst:
  • ~~~perl
  • #!/usr/bin/perl -w
  • use strict;
  • my $äöü = 1;
  • print $äöü, "\n";
  • ~~~
  • Und `-C`-Flags zählen nicht!
  • Für den Rest bin ich jetzt zu müde.
  • LG,
  • CK
  • --
  • <https://wwwtech.de/about>