Просто для полноты, вот очень краткое введение в отладчик.
perl -d your_program
запускает его под bugger.Вы получите контроль над первой исполняемой строкой (операторы use и тому подобное уже выполнялись на этом этапе).
's' перейдет к следующей строке.После того, как вы ввели 's', вы можете просто нажать Return, чтобы повторить его.'s' уйдет в функции / подпрограммы / методы.Либо продолжайте идти до тех пор, пока не вернетесь, либо введите команду 'r', чтобы выполнить остальную часть функции и вернуться сразу после вызова.
Если вы хотите перешагнуть подпрограммы, то есть выполнить их ивернуться без необходимости заходить и возвращаться, используйте 'n.Возврат каретки после первого «n» также продолжает выполнять «n» для вас.
Если вы знаете строку, на которой хотите остановиться, используйте команду «b» - b linenumber - для установки точки останова,затем «с», чтобы продолжить, пока не достигнете.Обратите внимание, что каждый раз, когда вы 'c' и возвращаетесь к точке останова, вы снова останавливаетесь.Используйте 'B linenumber', чтобы выключить точку останова.
Итак, давайте предположим, что вы получили что-то вроде этого:
my $obj = complex_function_returning_unknown_thing;
Отладчик только что показал вам эту строку, которая говорит "Я еще не выполнил это, но это то, что я буду делать дальше ".Введите «n» для выполнения подпрограммы, затем используйте команду «x» для просмотра объекта: «x $ obj».Если он большой, вы можете сказать «| x $ obj», который пропускает вывод через пейджер.Чтобы увидеть, какие методы есть у объекта, используйте 'm $ obj'.
В отладчике гораздо больше, но вы действительно можете использовать его для такого рода вещей - вам просто нужно увидеть типобъект, который вы получаете из некоторого кода, и выясните, какие методы у объекта, который вы получили.
Возможно, было бы более полезно 'x' обьектить объект и затем посмотреть на источник класса, в котором был объектблагословил узнать, что вы должны делать, а не то, что вы можете делать.Команда 'x' в значительной степени похожа на 'print ref ($ obj)', в любом случае, с Data :: Dumper.