समारोह length() पर्ल में

में पर्ल प्रोग्रामिंग भाषा में बनाया गया है एक समारोह length(). इस फ़ंक्शन स्ट्रिंग की लंबाई है, जो पारित करने के लिए तर्क का समारोह है ।

यहाँ एक उदाहरण है:

▶ Run
#!/usr/bin/perl

print( length('Hello') );

इस प्रोग्राम संख्या को प्रदर्शित करेगा 5. लाइन में 'Hello' पांच अक्षर.

तर्क

my $length = length($str);

यदि कार्य length() पास करने के लिए एक ही तर्क है, के समारोह पर काम करेंगे ।

यदि आप के पास नहीं है किसी भी तर्क, फ़ंक्शन के साथ काम करेंगे चर $_. यहाँ एक उदाहरण है (प्रोग्राम संख्या प्रदर्शित करता 4):

▶ Run
#!/usr/bin/perl

$_ = 'asdf';

print( length() );

यदि कार्य length() के पास एक से अधिक तर्क है, यह त्रुटि होगा:

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

वापसी मान

समारोह length() रिटर्न या तो undefया एक सकारात्मक पूर्णांक है. समारोह रिटर्न undef यदि केवल यह दिया undef.

यहाँ तीन कार्यक्रमों, उनमें से प्रत्येक के length() रिटर्न undef. वे सभी बराबर हैं.

▶ 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();

यूनिकोड

समारोह length() रिटर्न की संख्या में वर्णों की स्ट्रिंग, नहीं बाइट्स की संख्या है, लेकिन यह आवश्यक है कि पंक्ति के साथ किया गया था एक ध्वज है कि कहते हैं, कि स्ट्रिंग है यूनिकोड । इस ध्वज स्वचालित रूप से प्रकट होता है और तार कर रहे हैं में वर्णित कोड अगर कार्यक्रम वहाँ रहे हैं use utf8;. यहाँ है एक प्रोग्राम है कि रिटर्न की संख्या 7 सही संख्या है, वर्ण के इस स्ट्रिंग:

▶ Run
#!/usr/bin/perl

use utf8;

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

लेकिन यदि प्रोग्राम में कोई use utf8;, तो तार कार्यक्रम में परिभाषित किया गया के रूप में माना जाता बाइट्स के एक दृश्य है, और समारोह length() रिटर्न बाइट्स की संख्या. यहाँ एक कार्यक्रम है का उपयोग करता है जो एक ही स्ट्रिंग के रूप में पिछले उदाहरण में, लेकिन इस प्रोग्राम संख्या प्रदर्शित करता 14 (लाइन में 7 पत्र, प्रत्येक पत्र है दो बाइट्स):

▶ Run
#!/usr/bin/perl

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

उदाहरण

यहाँ एक कार्यक्रम है जो दिखाता है के कुछ उदाहरण समारोह 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);
}

आउटपुट इस कार्यक्रम से:

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

समारोह length() रिटर्न एक ही मूल्य के लिए लाइन '12' और नंबर के लिए 12 (संख्या 2). हेक्साडेसिमल संख्या 0xff है 255 में दशमलव संकेतन और length() संख्या देता 3. एक ही काम करता है और संख्या में लिखा है, बाइनरी अंकन है.

समारोह length() इस्तेमाल नहीं किया जा सकता की संख्या गिनने के लिए सरणी में तत्वों या हैश. ऐसा करने के लिए कैसे का वर्णन कर रहे हैं अगले पन्नों पर:

के लिए ARRAYREF और HASHREF समारोह length() रिटर्न में वर्णों की संख्या के तार 'ARRAY(0x561a04e48578)'.

सरकारी दस्तावेज

यहाँ उत्पादन के आदेश 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.

संबंधित विषयों

अन्य लेख