Fonction ord() en Perl

Dans le langage de programmation Perl, il ya une fonction intégrée ord(). Cette fonction renvoie un nombre, qui correspond à un caractère spécifique.

Voici un exemple:

▶ Run
#!/usr/bin/perl

use utf8;
use feature qw(say);

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

Les arguments

Si la fonction ord() ne transmettre aucun argument, il fonctionne avec дефолтной variable $_:

▶ Run
#!/usr/bin/perl

$_ = 'a';

print ord(); # 97

L'utilisation standard de la fonction est de transmettre un seul caractère. Dans ce cas, la fonction retourne la valeur numérique de ce symbole. Si la fonction ord() passer une chaîne, qui se compose de plusieurs caractères, la fonction retournera la valeur numérique du premier caractère:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Si la fonction ord() de transmettre plus d'un argument, ce serait une erreur:

▶ 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.

Dans ce cas, si vous passez dans le ord() une chaîne vide, la fonction renvoie le nombre de 0:

▶ Run
#!/usr/bin/perl

print ord('');

Unicode

Voici un exemple de programme pour le même caractère, la fonction ord() renvoie des valeurs différentes:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say ord('Ъ');

use utf8;

say ord('Ъ');

Le programme affichera:

208
1066

Le premier appel ord('Ъ') renvoie le nombre de 208. Cela provient du fait que ord() perçoit votre argument n'est pas comme un symbole, mais comme une chaîne de caractères à deux octets 208 170 et renvoie le numéro du premier caractère de cette chaîne.

Mais après use utf8; perl estime que le code de programme est écrit dans le codage utf8 et ord() perçoit son argument n'est pas comme une chaîne de deux caractères, mais comme une chaîne d'un caractère. Et renvoie la valeur 1066.

La documentation officielle

Voici la sortie de la commande 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.

Autres articles