La función de ord() en Perl

En el lenguaje de programación Perl tiene integrada la función de ord(). Esta función devuelve un número que corresponde a la indicada por el símbolo.

He aquí un ejemplo:

▶ Run
#!/usr/bin/perl

use utf8;
use feature qw(say);

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

Los argumentos

Si la función de ord() no enviar ningún argumento, la función trabaja con дефолтной variable $_:

▶ Run
#!/usr/bin/perl

$_ = 'a';

print ord(); # 97

Uso estándar de la función es la de pasar exactamente un carácter. En este caso, la función devuelve el valor numérico de este símbolo. Si la función de ord() pasa la cadena, que se compone de varios caracteres, la función devuelve el el valor numérico del primer carácter de:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Si la función de ord() enviar más de un argumento, lo que se producirá un error:

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

En caso de entregar en ord() una cadena vacía, la función devuelve el número de 0:

▶ Run
#!/usr/bin/perl

print ord('');

Unicode

He aquí un ejemplo de un programa en que para el mismo carácter de la función ord() devuelve un valor diferente:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say ord('Ъ');

use utf8;

say ord('Ъ');

El programa mostrará en pantalla:

208
1066

La primera llamada ord('Ъ') devuelve el número 208. Así ocurre debido al hecho de que ord() percibe que su argumento no como un carácter, como una cadena de dos bytes 208 170 y devuelve el número para el primer carácter de la cadena.

Pero después de use utf8; perl considera que el código de un programa escrito en la codificación utf8 y ord() percibe que su argumento no como una cadena de dos caracteres, y como una cadena de un carácter. Y devuelve el valor en 1066.

La documentación oficial

He aquí el resultado 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.

Otros articulos