Для профилирования установите выход explitict. Создайте счетчик и выйдите из своей программы, если ваша итерация равна или больше этой.
Для профилирования используйте NYTprof:
perl -d: NYTProf script.pl
nytprofhtml
Но вы имеете дело с утечкой памяти здесь.
Прочтите это, чтобы найти утечку памяти: Как я могу найти утечки памяти в долго выполняющейся программе Perl?
Скорее всего, у вас есть переменная, которая никогда не будет освобождена. Perl освобождает память, если переменная выходит из области видимости, но одна из ваших переменных никогда не выходит из области видимости.
Используйте $ variable = undef, чтобы освободить память.
Если вы перенесете весь свой скрипт, возможно, мы сможем найти в нем утечку.
С уважением,