perlfaq5に「あるファイルの行数を数えるには? 」という問いに対し、
下の記述が載っています。
$lines = 0;
open(FILE, $filename) or die "Can't open $filename: $!";
while (sysread FILE, $buffer, 4096) {
$lines += ($buffer =~ tr/\n//);
}
ファイルを読み込んで、改行の数を数えることで行数を取得しています。
配列の要素数を利用すると下のように書けます。
open(FILE, $filename) or die "Can't open $filename: $!";
@buffers = <FILE>;
$lines = @buffers;
こちらの方がシンプルな気はします。
perlfaq5での記述は、無駄にメモリを使わないのが利点 ということですかね?