Funktion ord() in Perl

In der Programmiersprache Perl gibt es die eingebaute Funktion ord(). Diese Funktion gibt eine Zahl, die mit dem angegebenen Zeichen.

Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

use utf8;
use feature qw(say);

say ord('A'); # 65
say ord('1'); # 49
say ord('Ж'); # 1046

Argumente

Wenn Sie die Funktionen ord() nicht keine Argumente übergeben, wird die Funktion arbeitet mit дефолтной Variable $_:

▶ Run
#!/usr/bin/perl

$_ = 'a';

print ord(); # 97

Standard-Verwendung von Funktionen – es soll genau ein Zeichen. In diesem Fall wird die Funktion gibt den numerischen Wert des symbols. Wenn Sie die Funktionen ord() übergeben Sie eine Zeichenfolge, die besteht aus mehreren Zeichen, gibt die Funktion zurück der numerische Wert des ersten Zeichens:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say ord('a'); # 97
say ord('abcdef'); # 97

Wenn die Funktionen ord() übergeben mehr als ein argument, dann wird der Fehler:

▶ Run
#!/usr/bin/perl

print ord('a', 'b', 'c');
Too many arguments for ord at script.pl line 3, near "'c')"
Execution of script.pl aborted due to compilation errors.

In diesem Fall, wenn Sie in ord() leere Strings kann die Funktion gibt die Anzahl der 0:

▶ Run
#!/usr/bin/perl

print ord('');

Unicode

Hier ist ein Beispiel in dem Programm für dasselbe Zeichen Funktion ord() gibt verschiedene Werte:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say ord('Ъ');

use utf8;

say ord('Ъ');

Das Programm zeigt auf dem Bildschirm:

208
1066

Der erste Anruf ord('Ъ') ergibt die Anzahl der 208. So ist aufgrund der Tatsache, dass ord() empfindet Ihr argument nicht als ein Zeichen, sondern als String aus zwei Bytes 208 170 und gibt die Nummer des ersten Zeichens des Strings.

Aber nach use utf8; perl meint, dass der Programmcode geschrieben in der Codierung utf8 und ord() nimmt Ihr argument nicht als String aus zwei Zeichen, sondern als String. aus einem einzelnen Zeichen. Und gibt es auf 1066.

Die offizielle Dokumentation

Hier ist die Ausgabe von perldoc -f ord:

    ord EXPR
    ord     Returns the numeric value of the first character of EXPR. If
            EXPR is an empty string, returns 0. If EXPR is omitted, uses $_.
            (Note *character*, not byte.)

            For the reverse, see "chr". See perlunicode for more about
            Unicode.

Andere Artikel