Just lately I have come to depend on Data::Dumper
a lot, particularly as I'm developing in a web environment where running a debugger is not practical.
I've come to often quickly add the following into a block of code:
print( Dumper( \%hashvariable ) );
I put braces around just out of habit.
Note that I put the backslash in front of the hash reference, for some reason that results in a clearer-to-read output from Dumper than just Dumper( %hashvariable ).
When in a web environment (such as Mason) I use the following to dump my variables:
$m->out( '<pre>' . Dumper( \%hashvariable ) . '</pre>' );