On the subject of forgetting to use Data::Dumper;, my solution is to use some standard code templates so that I start out with a stack of standard "use" statements
in reply to Stupid mistakes I repeatedly make
Adding use Data::Dumper; to that list sounds like
a good idea. I also have the template insert a standard pod framework (with the name of the file filled in automatically).
I do this in emacs, with the newish package called template.el.
And actually I run it using a emacs lisp package that I've been working on: perlnow.el.
I've got separate commands for starting work on scripts, OOP modules, proceedural modules and *.t code, all of which use different templates.