You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Perl数组计数器$#a返回值小于实际元素个数?

问题解析:Perl数组$#a为何显示2而非3?

示例代码

my $t = "abc\nfoo\nbar";
my @a = split(/\n/g, $t);
print $#a . " lines\n";
foreach my $x (@a) {
    print 'line: ' . $x . "\n";
}

执行输出

2 lines
line: abc
line: foo
line: bar

原因说明

这事儿其实是Perl的数组特性决定的:$#a根本不是返回数组的元素总数,而是返回数组最后一个元素的索引值。Perl里数组的索引是从0开始计数的:

  • 第一个元素abc对应索引0
  • 第二个元素foo对应索引1
  • 第三个元素bar对应索引2

所以$#a输出2完全合理。如果想打印数组的元素个数,得用scalar @a,把代码里的打印语句改成print scalar @a . " lines\n";,输出就会变成3 lines了。

内容的提问来源于stack exchange,提问作者yegor256

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:25:34