这是我的代码:
my @list = qw (The quick brown fox jumps over the lazy Perl programmer);
my @list1 = qw (Sparta F R I j h df dfsd dfsdf );
my @list2 = qw (The quick brown fox jumps over the lazy Perl programmer);
print length(@list), "\n";
print length(@list1), "\n";
print length(@list2), "\n";
我得到的输出:
2
1
2
产出背后的原因是什么?难道它不能给我第一个元素的长度吗?
答案 0 :(得分:7)
length函数始终对字符串起作用,它会创建SCALAR 其参数的上下文。因此,如果我们将数组作为参数传递, 该数组将放在SCALAR上下文中,它将返回 其中的元素数量。
在数组上调用length会返回数组中元素数量的长度。
因此:
length(@list)
返回2
(length(10) == 2
)length(@list1)
返回1
(length(9) == 1
)答案 1 :(得分:7)
此上下文中的数组被计算为其长度计数。由于第一个数组包含10个元素,因此length()函数获取字符串" 10"作为参数并返回2.
第二个数组长度为9,长度为1个字符,因此长度返回1.