Одной из моих любимых мозолей с отладкой кода Perl (в командной строке debbugger, perl -d
) является тот факт, что ошибочная печать (с помощью команды x
) содержимого огромной структуры данных гарантированно замораживает ваш терминал навсегда с половиной, а сотни страниц данных печатаются. Особенно, если это происходит в медленной сети.
Как таковой, я хотел бы иметь возможность ограничить объем данных, которые x
печатает.
Я вижу два подхода - я хотел бы попробовать любой, если кто-то знает, как это сделать.
Ограничить объем данных, который выводит любая отдельная команда в отладчике.
Еще лучше: каким-то образом заменить встроенную команду x
на собственный метод Perl (который вычислит «размер» структуры данных и откажется печатать ее содержимое без подтверждения).
Я специально спрашиваю "как заменить x
пользовательским кодом" - создание Good Enough "- это слишком большая структура данных" Perl-метод - это то, что я, вероятно, могу сделать самостоятельно без особых усилий, хотя вижу достаточно ловушек, мешающих «идеальному» быть довольно разочаровывающим занятием. Черт возьми, простое выполнение Data :: Dumper-> Dump и получение длины строки может помочь:)
Обратите внимание, что я прекрасно знаю, как вручную избежать этой проблемы, рекурсивно исследуя слои структуры данных (например, распечатывать ссылку, печатать количество ключей / элементов массива и т. Д.) ... в целом Суть в том, что я хочу избежать бездумного ввода x $huge_pile_of_data
, не задумываясь - или наткнуться на ошибку, заполняющую огромную кучу данных в скаляр.