perl - 将数组传递给Perl length子例程时会发生什么?

标签 perl subroutine string-length

这是我的代码:

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


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

最佳答案

herehere对此进行了很好的记录


长度函数始终对字符串起作用,并创建SCALAR
其参数的上下文。因此,如果我们将数组作为参数传递,
该数组将放置在SCALAR上下文中,并将返回
其中的元素数量。


在数组上调用length返回数组中元素数的长度。

从而:


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

关于perl - 将数组传递给Perl length子例程时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36084030/

相关文章:

perl - 子程序是否应该始终显式返回?

arrays - 不同长度的VHDL常量字符串数组

c - 字符串长度与数组长度不同?

perl - 动态更改 STDOUT 和 STDERR 重定向

perl - 在 perl 中使用 Crypt::OpenSSL::RSA 对数据进行签名

Perl - 包含来自相对路径的包,其中包含来自相对路径的另一个包?

珀尔 : Dereference between @_ and $_

perl - 将散列传递给子例程

ios - 如何从 NSString 获取特定字节长度的子字符串

perl - 尝试使用@INC并按需调用函数