正确的有效的方法是计算文件中的换行数。下面的程序使用了tr///的特性。如果你的文本文件不是以换行结束,那么它就不是真正的文本文件。所以这个程序能够指出比你预期的更为较少的行数。 $lines = 0; /*en(FILE, $filena*/; or die "Can't open `$filename': $!"; while (sysread FILE, $buffer, 4096) { $lines += ($buffer =~ tr/\n//); } close FILE;