Chức năng length() trong Perl

Perl ngôn ngữ đã được tích hợp trong chức năng length(). Này, trở về chức năng chiều dài của chuỗi, đó là thông qua luận cứ để hàm.

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

▶ Run
#!/usr/bin/perl

print( length('Hello') );

Chương trình này sẽ hiển thị số 5. Trong dòng 'Hello' năm nhân vật.

Lập luận

my $length = length($str);

Nếu các chức năng length() phải vượt qua một cuộc tranh luận, các chức năng sẽ hoạt động vào nó.

Nếu anh không vượt qua mọi cuộc tranh cãi, các chức năng sẽ làm việc với những định biến $_. Đây là một ví dụ (chương trình hiển thị các số 4):

▶ Run
#!/usr/bin/perl

$_ = 'asdf';

print( length() );

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

Too many arguments for length at script.pl line 3, near "'a') "
Execution of script.pl aborted due to compilation errors.

Trở lại giá trị

Chức năng length() trở về hoặc là undefhoặc một số nguyên dương. Các chức năng trở về undef chỉ nếu nó đánh undef.

Đây là ba chương trình, mỗi người trong số họ length() trở về undef. Họ là tất cả tương đương.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

warn Dumper length(undef);
▶ Run
#!/usr/bin/perl

use Data::Dumper;

$_ = undef;

warn Dumper length();
▶ Run
#!/usr/bin/perl

use Data::Dumper;

warn Dumper length();

Unicode

Chức năng length() trở về số lượng các nhân vật trong chuỗi, không phải số của bạn, nhưng nó là cần thiết mà hàng đã được với một lá cờ mà nói, đó là chuỗi Mỹ. Lá cờ này tự động xuất hiện và dây được miêu tả trong các mã nếu chương trình có use utf8;. Đây là một chương trình trở về những số 7 là số chính xác nhân vật trong chuỗi này:

▶ Run
#!/usr/bin/perl

use utf8;

print( length('АБВГДЕЁ') );

Nhưng nếu các chương trình không use utf8;, sau đó, chuỗi được xác định trong chương trình coi như là một chuỗi của bạn, và các chức năng length() trở về các số liệu. Đây là một chương trình đó, sử dụng cùng một chuỗi như trong ví dụ trước, nhưng này, chương trình hiển thị các số 14 (trong dòng 7 chữ cái, từng là thư hai nội):

▶ Run
#!/usr/bin/perl

print( length('АБВГДЕЁ') );

Ví dụ

Đây là một chương trình đó cho thấy một số ví dụ về chức năng length():

▶ Run
#!/usr/bin/perl

use feature qw(say);

my $arr = [1, 2, 3];
my $hash = { a => 1 };
my $sub = sub { return 1 };

foreach my $var ('12', 12, 0xff, 0b1000, 'S', 'String', $arr, $hash, $sub ) {
    say $var . ' - ' . length($var);
}

Đầu ra từ chương trình này:

12 - 2
12 - 2
255 - 3
8 - 1
S - 1
String - 6
ARRAY(0x561a04e48578) - 21
HASH(0x561a04e60cf8) - 20
CODE(0x561a04e61370) - 20

Chức năng length() trở về cùng một giá trị cho dòng '12' và số 12 (số 2). Lục phân số 0xff255 trong thập, ký hiệu và length() trả về số 3. Làm việc cùng một và số được viết trong ký hiệu nhị phân.

Chức năng length() không thể được sử dụng để đếm số của các yếu tố trong mảng hoặc băm. Làm thế nào để làm việc này được mô tả trên các trang sau:

Cho ARRAYREF và HASHREF chức năng length() trở về số lượng các nhân vật trong chuỗi 'ARRAY(0x561a04e48578)'.

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

Đây là kết quả của sự chỉ huy perldoc -f length:

       length EXPR
       length  Returns the length in characters of the value of EXPR.  If EXPR
               is omitted, returns the length of $_.  If EXPR is undefined,
               returns "undef".

               This function cannot be used on an entire array or hash to find
               out how many elements these have.  For that, use "scalar
               @array" and "scalar keys %hash", respectively.

               Like all Perl character operations, length() normally deals in
               logical characters, not physical bytes.  For how many bytes a
               string encoded as UTF-8 would take up, use
               "length(Encode::encode_utf8(EXPR))" (you'll have to "use
               Encode" first).  See Encode and perlunicode.

Chủ đề liên quan

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