Preload Data::Printer and avoid polluting your code with debug symbols
When I work, I tend to have a lot of boilerplate. I am a great user of Data::Printer for debugging. There is no way I wouldn’t use it, even on the smallest project. Usually, I have this on all my projects:
use strict;
use warnings;
use Data::Printer;
p $object;
Fellow Peter coworker saw me doing that once and said I liked typing too much: only use DDP was enough.
Later I learned another solution was provided in the DDP documentation.
It’s possible to call ::pinstead of p(): ::p doesn’t require to use the module first.
use strict;
use warnings;
::p $object;
For getting this to work, it’s necessary to preload the module through command line:
perl -MDDP script.pl
The good thing is that if we forget debug symbols in a module that is going to reach deployment pipelines or the CPAN (assuming we don’t have other tools configured complaining about that), it will trigger a compile-time failure without the -M option, making it easier to catch.
Note that it also works well for tests with Test2::Harness:
yath -MDDP 01_test.t