将数组传递给Perl长度子例程时会发生什么?

Pra*_*eep 2 perl string-length subroutine

这是我的代码:

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";
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

2
1
2
Run Code Online (Sandbox Code Playgroud)

输出背后的原因是什么?它不应该给我第一个元素的长度吗?

fug*_*ugu 7

这里这里都有很好的记录

length函数始终对字符串起作用,并为其参数创建SCALAR上下文.因此,如果我们将一个数组作为参数传递,那么该数组将被放置在SCALAR上下文中,它将返回其中的元素数.

在数组上调用长度返回数组中元素数量的长度.

从而:

  • 一个10元素的数组length(@list)返回2(length(10) == 2)
  • 一个9元素的数组length(@list1)返回1(length(9) == 1)


neu*_*aus 7

此上下文中的数组被计算为其长度计数.由于第一个数组包含10个元素,因此length()函数将字符串"10"作为其参数并返回2.

第二个数组的长度为9,长度为1个字符,因此长度返回1.