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

Perl数组输入异常:隔项存储输入内容的原因及解决方法

问题原因与修复方案

问题原因

你的代码每次循环执行了两次输入读取操作,直接导致奇数行的输入被丢弃:

  • 不管是for循环的条件$foods = <> ,还是注释中while循环的条件$foods = <> ,都已经从输入流读取了一行内容;
  • 但紧接着在chomp($foods = <>);语句里,又调用了一次<> 读取下一行,覆盖了之前读取的值。最终存入数组的只有第二次读取的内容,所以输入a、b、c、d、e、f后,数组里只会有b、d、f。

修复方案

只保留一次输入读取操作,将读取到的内容处理后再存入数组。以下是两种正确的实现方式:

方式一:使用while循环(推荐写法)

print "Please enter your favorite foods, one per line\n";
my @foods;
while (my $food = <>) {
    chomp $food;  # 去除换行符
    push @foods, $food;  # 将处理后的内容存入数组
}
# 打印数组内容示例
print join('', @foods), "\n";

方式二:使用for循环

print "Please enter your favorite foods, one per line\n";
my @foods;
for (my $i = 0; my $food = <>; $i++) {
    chomp $food;
    $foods[$i] = $food;  # 通过索引赋值,或用push @foods, $food;
}
# 打印数组内容示例
print join('', @foods), "\n";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:20:07