sub ::D { require Data::Dumper; return Data::Dumper::Dumper(@_) } sub ::DD { require Carp; Carp::confess(::D(@_)) } # later, call it like this: print ::D({ current_state => $state }); # debug print ::DD($state); # dump, stack trace, die.