功能 length() Perl

在Perl编程语言都有一个内置的功能 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();

Unicode

功能 length() 返回的数字符串,不是数字,但是 这是必要的,行为与一个标志,该标志说这串是Unicode。 这个标志的自动出现,并字符串中所描述的代码,如果该程序 有 use utf8;. 这里是一个程序,返回的数量 7 是正确的数目 人物在这string:

▶ 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). 十六号 0xff255 decimal notation和 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.

相关的主题

其他文章