Ich würd's mal mit
Tie::File probieren. Dann hast Du's, seltsamerweise unabhängig von der Größe, in einem Array, so daß das Zählen der Zeilen relativ einfach ist.
Müßte man gucken, wie performant das ist. "seek", usw., wäre wahrscheinlich schneller, aber auch unbequemer.