Chức năng ord() trong Perl

Perl ngôn ngữ đã được tích hợp trong chức năng ord(). Này, trở về chức năng số tương ứng với một quy định biểu tượng.

Đây là một ví dụ:

▶ Run
#!/usr/bin/perl

use utf8;
use feature qw(say);

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

Lập luận

Nếu các chức năng ord() không vượt qua bất kỳ lập luận, các chức năng làm việc với mặc định biến $_:

▶ Run
#!/usr/bin/perl

$_ = 'a';

print ord(); # 97

Chuẩn sử dụng năng này là để cho cô ấy đúng một nhân vật. Trong trường hợp này, các chức năng sẽ trở lại giá trị số các biểu tượng này. Nếu các chức năng ord() để vượt qua một chuỗi bao gồm một vài nhân vật, các chức năng sẽ trở lại giá trị số của nhân vật đầu tiên:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Nếu các chức năng ord() vượt qua nhiều hơn một cuộc tranh luận, nó sẽ lỗi:

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

Trong trường hợp nếu cậu vượt qua trong ord() là các chuỗi rỗng, các chức năng sẽ trả lại số 0:

▶ Run
#!/usr/bin/perl

print ord('');

Unicode

Đây là một mẫu trong chương trình mà cùng một biểu tượng một chức năng ord() trả một giá trị khác nhau:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say ord('Ъ');

use utf8;

say ord('Ъ');

Chương trình sẽ hiển thị:

208
1066

Đầu tiên, gọi ord('Ъ') trở về số 208. Điều này xảy ra do thực tế là ord() lấy lập luận của mình như là một nhân vật duy nhất, nhưng là một chuỗi của hai nội 208 170 và trả về một số nhân vật đầu tiên của chuỗi này.

Nhưng sau khi use utf8; perl nghĩ của bạn mã được mã hóa utf8ord() cần lập luận của mình như là một chuỗi của hai nhân vật và như một chuỗi của một nhân vật duy nhất. Và trở về các giá trị 1066.

Tài liệu chính thức

Đây là kết quả của sự chỉ huy 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.

Các bài viết khác