我的测试中有一个问题:
计算文件中的行数和单词数的程序有什么问题?
open F, $ARGV[0] || die $!;
my @lines = <F>;
my @words = map {split /\s/} @lines;
printf "%8d %8d\n", scalar(@lines), scalar(@words);
close(F);
我的猜想是:
- 如果文件不存在,程序不会告诉我们。
如果文件中有标点符号,程序将计算它们,例如,在
abc cba , , ,dce
将是五个字,但另一方面
wc
输出相同的结果,因此它可能被认为是正确的行为。- 如果
F
是一个大文件,最好遍历行而不是将其转储到lines
数组中。
你有什么不那么琐碎的想法吗?