如何在Perl中获取字符串的长度?

时间:2008-10-21 20:31:38

标签: perl string

Perl相当于strlen()

6 个答案:

答案 0 :(得分:72)

perldoc -f length

   length EXPR
   length  Returns the length in characters of the value of EXPR.  If EXPR is
           omitted, returns length of $_.  Note that this 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.

           Note the characters: if the EXPR is in Unicode, you will get the num-
           ber of characters, not the number of bytes.  To get the length in
           bytes, use "do { use bytes; length(EXPR) }", see bytes.

答案 1 :(得分:42)

虽然'length()'是应该在任何理智代码中使用的正确答案,但是应该提到Abigail's length horror,如果只是为了Perl知识。

基本上,技巧包括使用catch-all音译操作符的返回值:

print "foo" =~ y===c;   # prints 3

y /// c用自己替换所有字符(多亏了补码选项'c'),并返回替换字符的数量(实际上,字符串的长度)。

答案 2 :(得分:33)

length($string)

答案 3 :(得分:0)

length()功能:

$string ='String Name';
$size=length($string);

答案 4 :(得分:0)

您不应该使用它,因为length($ string)更简单并且更具可读性,但是我在查看代码时碰到了其中的一些内容,并且感到困惑,因此,如果其他人这样做,它们也会得到长度字符串:

my $length = map $_, $str =~ /(.)/gs;
my $length = () = $str =~ /(.)/gs;
my $length = split '', $str;

前两个通过使用全局标志来匹配字符串中的每个字符,然后在标量上下文中使用返回的匹配列表来获取字符数来工作。第三类的工作原理类似,它是对每个字符进行拆分而不是使用正则表达式匹配,并在标量上下文中使用结果列表。

答案 5 :(得分:0)

不是回答而是观察:我正在运行为darwin-2level构建的v5.30.2,并且我注意到,如果我不首先chomp输入(与stdin一样),然后进行计算长度,单个字符的length不是1,而是2。

记住那些可能是换行符和其他隐藏字符的原因。

我很想找到Abigail的帖子,但可惜它似乎已经被以太所吞噬。