Задача: хочется понять что находится в переменной внутри Perl программы. Например, есть вот такой код. В нем определяется и используется переменная $person — хочется понять что там содержится.
Чаще всего эта задача решается с помощью подключения модуля Data::Dumper:
use Data::Dumper;
print Dumper $person;
Код.
В ответ мы увидем что-то вроде:
Ну да, что-то тут видно, но это как-то совсем не user-friendly вывод. Вместо unicode символов пишется \x{...}, да и весь вывод какой-то унылый.
В мире соременного Perl есть чудесный и замечательный модуль Data::Printer (вместо длинного названия Data::Printer гораздо удобнее использовать сокращение DDP). Вот как решается эта же задача с помощью DDP:
use DDP;
p $person;
Вот код. При использовании DDP нужно вводить почти в 3 раза меньше текста, но самое главное — это то как выглядит вывод:
Вот список почему этот вывод лучше чем вывод Data::Dumper:
Вот еще пример сравнения Data::Dumper и DDP. Вот как эти 2 модуля выводят хеш и массив.
Унылый вариант Data::Dumper:
И мега вывод DDP:
DDP может быть очень гибко настроен. Мне не совсем подошли настройки DDP из коробки, поэтому у меня есть вот конфиг файл ~/.dataprinter со следующим содержимым:
{
use_prototypes => 0,
hash_separator => ' => ',
index => 0,
return_value => 'void',
end_separator => 1,
}
При всем великолепии модуля DDP у него есть недостаки, про которые стоит знать.
А почему модуль Data::Printer сокращается до DDP? Мне стало интересно, я задал вопрос и получит ответ.
DDP — прекрасная вещь, которой обязательно нужно пользоваться при разработке и дебаге. А еще:
24 сентября 2014