in reply to Reopening builtin classes, redefining builtin functions?

A class in Perl is nothing more than a namespace. All you need to do is add to that namespace:
use Data::Dumper; # $d is an instance of Data::Dumper $d = new Data::Dumper([]); # Use a typeglob to create &Data::Dumper::foo *{Data::Dumper::foo} = sub { print "foo\n" }; # And now $d has the method $d->foo(); # Switch into the Data::Dumper package (namespace) package Data::Dumper; # Define a function here sub bar { print "bar\n" } # Back in main, $d has the new method package main; $d->bar(); # No different if the method exists *{Data::Dumper::Dump} = sub { print "Not Dump\n" }; $d->Dump();
Perlsub has an example of replacing the built-ins.