Единственного способа сделать это не существует, и выполнение его по частям не всегда является лучшим способом проверки использования памяти. Я собираюсь порекомендовать набор инструментов, которые вы можете использовать, некоторые из них работают над программой в целом, другие позволяют вам изучить один раздел вашего кода или одну переменную.
Возможно, вы захотите использовать Valgrind . Есть даже модуль Perl Test :: Valgrind , который поможет настроить файл подавления для вашей сборки Perl, а затем проверить утечки памяти или ошибки в вашем скрипте.
Также есть Devel :: Size , который делает точно , что вы просили, но на основе переменной за переменной, а не по частям.
Вы можете использовать Devel :: Cycle для поиска непреднамеренных циклических ссылок в памяти в сложных структурах данных. В то время как циклическая ссылка не означает, что вы тратите впустую память, когда используете объект, циклические ссылки препятствуют освобождению чего-либо в цепочке до тех пор, пока цикл не прервется.
Devel :: Leak немного более загадочен, чем остальные, но в основном это позволит вам получить полную информацию о любых SV s, которые созданы и не уничтожены между две точки в исполнении вашей программы. Если вы проверите это через дополнительный вызов, вы узнаете любую новую память, выделенную этой подпрограммой.
Вы также можете прочитать раздел perldebguts в руководстве по Perl.
Я не могу больше помочь, потому что каждая кодовая база будет отличаться. Test :: Valgrind будет отлично работать для одних кодовых баз и ужасно для других. Если вы собираетесь попробовать это, я рекомендую вам использовать последнюю доступную версию Valgrind и Perl> = 5.10, так как Perl 5.8 и Valgrind исторически не ладили.