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?
#!/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:
#!/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"
, 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
(von dessen Verwendung abgeraten wird).
Auch das Beispiel aus deinem vorherigen Code ist falsch, es ist durchaus möglich ohne use utf8
zu matchen:
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:
#!/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