I can never quite get why nobody (apart from me) ever seems to recommend Data::Dumper::Simple
It's way easier to use than Data::Dumper, especially for more complex data structures. There is no need to pass references, and the output contains the actual variable names - instead of "VAR1", "VAR2", etc.
I know you can get the same thing with Data::Dumper using Dumper->Dump, but this can very quickly become quite unwieldy.
About the only objection I could imagine to using Data::Dumper::Simple is that is uses source filters, but if you're only using it for debugging - and not in production code - what's the problem?