Funzione ord() in Perl

Nel linguaggio di programmazione Perl ci sono built-in funzione di ord(). Questa funzione restituisce un numero che corrisponde a un carattere.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

use utf8;
use feature qw(say);

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

Argomenti

Se la funzione ord() non trasmettere nessun argomento, la funzione funziona con di default della variabile $_:

▶ Run
#!/usr/bin/perl

$_ = 'a';

print ord(); # 97

L'uso standard di funzioni è dirle esattamente un carattere. In questo caso, la funzione restituirà il valore numerico di questo simbolo. Se la funzione ord() passare una stringa, che si compone di diversi caratteri, la funzione restituisce l' il valore numerico del primo carattere:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Se la funzione ord() di trasferire più di un argomento, quello è un errore:

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

Nel caso in cui trasferire in ord() riga vuota, allora la funzione restituisce il numero di 0:

▶ Run
#!/usr/bin/perl

print ord('');

Unicode

Ecco un esempio di programma in cui per uno stesso simbolo funzione ord() restituisce valori diversi:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say ord('Ъ');

use utf8;

say ord('Ъ');

Il programma visualizzerà sullo schermo:

208
1066

La prima sfida ord('Ъ') restituisce il numero 208. Così accade che ord() percepisce il tuo argomento non come un simbolo, e come una stringa di due byte 208 170 e restituisce il numero per il primo carattere della riga.

Ma dopo use utf8; perl ritiene che il codice è scritto in formato utf8 e ord() percepisce il tuo argomento non come una stringa di due caratteri, e come stringa da un singolo carattere. E restituisce il valore 1066.

La documentazione ufficiale di

Ecco l'output del comando 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.

Altri articoli