use Data::Dumper; use DateTime; use DateTime::TimeZone; use Math::BigInt; $var = { number => 1, bigint => Math::BigInt->new(), datetime => DateTime->now(), tz => DateTime::TimeZone->new( name => 'America/Chicago' ), }; $Data::Dumper::Useperl = 1; *Data::Dumper::_dump_orig = \&Data::Dumper::_dump; *Data::Dumper::_dump = sub { return "Math::BigInt->new('".$_[1]->bstr()."')" if ref $_[1] eq 'Math::BigInt'; return "rfc822('".$_[1]->strftime("%a, %d %b %Y %H:%M:%S %z")."')" if ref $_[1] eq 'DateTime'; return ref $_[1] if (ref $_[1]) =~ /^DateTime::TimeZone::/; goto &Data::Dumper::_dump_orig; }; print Dumper($var);