package PpDumper; # PpDumper is a subclass of Data::Dumper, which provides # a custom _dump() method use Data::Dumper; our @ISA='Data::Dumper'; sub _dump { my ($self, $val, $name) = @_; print "my _dump called\n"; (ref($val) && $val->can('pp')) ? $val->pp($name) : $self->SUPER::_dump($val,$name); } sub PpDumper::Dumper { my ($class,@args) = @_; print "my own Dumper called\n"; $class->SUPER::Dumper(@args); } package main; .... my $h = { ... } { local $Data::Dumper::Useperl=1; print("3:\n",PpDumper->Dumper($h),"\n"); }