Perl新手求助:如何用while(<>)和split实现CSV文件数字总和计算
修正Perl脚本实现CSV所有数字总求和
要实现所有数字的总求和,核心是在循环外定义一个全局累加变量,避免每次循环重置总和。以下是符合要求的新手友好版代码:
#!/usr/bin/perl use strict; use warnings; # 初始化总求和变量,放在循环外保证不会被重置 my $total_sum = 0; # 逐行读取输入文件(支持命令行传多个CSV文件) while (<>) { chomp; # 移除行尾的换行符,避免分割时引入无效内容 # 按逗号分割当前行,得到所有数字的列表 my @row_numbers = split /,/; # 遍历当前行的每个数字,累加到总总和 foreach my $num (@row_numbers) { $total_sum += $num; } } # 循环结束后输出最终总结果 print "所有数字的总和: $total_sum\n";
关键修正说明
- 全局累加变量:
$total_sum定义在while循环之外,确保每一行的数字都能持续累加到同一个变量中,而不是每行单独计算后就丢弃。 use strict;和use warnings;:强制代码规范,新手能快速发现变量未定义、类型错误等问题,减少调试难度。chomp;:必须移除行尾的换行符,否则最后一个数字会带有换行符,虽然Perl会自动转换,但养成这个习惯能避免特殊场景下的错误。split /,/:严格按逗号分割每行内容,符合题目中CSV仅含数字、逗号和换行的格式要求。
测试示例
假设你的CSV文件test.csv内容如下:
1,2,3 4,5,6 70,8,9
运行命令:
perl sum_csv.pl test.csv
输出结果为:所有数字的总和: 103,符合题目要求。
内容的提问来源于stack exchange,提问作者headcrash
相关产品推荐
相关产品推荐

