Fungsi length() di Perl

Dalam bahasa pemrograman Perl memiliki fungsi built-in length(). Fungsi ini mengembalikan panjang string, argumen yang dilewatkan ke fungsi.

Berikut ini sebuah contoh:

▶ Run
#!/usr/bin/perl

print( length('Hello') );

Program ini akan menampilkan jumlah 5. Sejalan 'Hello' lima karakter.

Argumen

my $length = length($str);

Jika fungsi length() untuk lulus satu argumen, fungsi akan beroperasi pada itu.

Jika anda tidak lulus setiap argumen, fungsi akan bekerja dengan default variabel $_. Berikut adalah contoh (program menampilkan jumlah 4):

▶ Run
#!/usr/bin/perl

$_ = 'asdf';

print( length() );

Jika fungsi length() lulus lebih dari satu argumen, maka akan error:

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

Nilai kembali

Fungsi length() kembali baik undefatau bilangan bulat positif. Fungsi kembali undef hanya jika itu memberi undef.

Berikut ini adalah tiga program, masing-masing dari mereka length() kembali undef. Mereka semua setara.

▶ 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

Fungsi length() mengembalikan jumlah karakter dalam string, bukan jumlah byte, tapi hal ini diperlukan bahwa baris itu dengan bendera yang mengatakan bahwa string Unicode. Bendera ini secara otomatis muncul dan string yang dijelaskan dalam kode jika program ada use utf8;. Berikut ini adalah sebuah program yang mengembalikan jumlah 7 adalah nomor yang benar karakter dalam string ini:

▶ Run
#!/usr/bin/perl

use utf8;

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

Tapi jika program tidak use utf8;, maka string yang didefinisikan dalam program dianggap sebagai urutan byte, dan fungsi length() mengembalikan jumlah byte. Berikut ini adalah sebuah program yang menggunakan string yang sama seperti pada contoh sebelumnya, tetapi program ini menampilkan jumlah 14 (di baris 7 huruf, setiap huruf dua byte):

▶ Run
#!/usr/bin/perl

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

Contoh

Berikut ini adalah sebuah program yang menunjukkan beberapa contoh dari fungsi 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);
}

Output dari program ini:

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

Fungsi length() kembali nilai yang sama untuk baris '12' dan untuk jumlah 12 (jumlah 2). Nomor heksadesimal 0xff adalah 255 dalam notasi desimal dan length() kembali jumlah 3. Bekerja sama dan jumlah ditulis dalam notasi biner.

Fungsi length() tidak dapat digunakan untuk menghitung jumlah elemen dalam array, atau hash. Bagaimana untuk melakukan hal ini dijelaskan pada halaman berikut:

Untuk ARRAYREF dan HASHREF fungsi length() mengembalikan jumlah karakter dalam string 'ARRAY(0x561a04e48578)'.

Dokumentasi resmi

Berikut ini adalah output dari perintah 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.

Topik terkait

Artikel lainnya