Если я правильно понял такую странную задачу, то вы можете:
1) вручную сохранять позицию
2) сделать итератор по вашему массиву - как просто через какую-то функцию, так и с полным ООП и перегрузкой
В любом случае, учтите, что:
1) данные из файла у вас могут быть только defined, а скаляры в массиве могут быть undef (т.е. стандартный тест на defined, который неявно подразумевается в while (<FH>) не обработает все случаи)
2) данные в файл по мере чтения из него не могут попасть (вставиться), а в массив могут.
Т.е. более правильные варианты обработки массивов - for (;;)/foreach/map