open FH, '<', 'file.txt' or die ("Can't read file: $!"); my ($lines, $total_length); while () { s/\s+$//s; # trims all traling whitespace, including \n ++$lines; $total_length += length($_); } #loop ends automatically when you reach EOF printf "File had %d lines, with an average length of %d chars\n", $lines, ($total_length / $lines);