Ich frag mich nur, wo die Grenze der Kapazität der Variabel LINES liegt. Im schlimmsten Fall könnte ja in einer 100kB Datei kein einziger Zeilenumbruch "\n" sein, dann würde die Datenmenge in $LINES[0] abgelegt sein??
Davor würde ich keine Angst haben, wir sind ja nicht mehr unter DOS mit 64k-Segmenten usw.
Schreib doch mal eine Schleife, in der Du an ein Array pro Durchgang einen 100-Byte-String an-pop()st und alle 1000 Durchgänge eine Meldung ausgibst. Wahrscheinlich wird das funktionieren, bis Dein SwapSpace voll ist ...