package Wrapobj;
our $VERSION = 1.000;
use Scalar::Util "blessed";
use mro;
sub import {
my $en = caller;
my $ens = $en . "::";
my $ep = \%{(do { no strict "refs"; $ens })};
my($_u, $o) = @_;
my $c = blessed($o) || $o;
for my $n (@{mro::get_linear_isa($c)}) {
my $p = \%{(do { no strict "refs"; $n . "::" })};
for my $s (sort keys %$p) {
if (exists(&{$$p{$s}})) {
if (!$$ep{$s} || !exists(&{$$ep{$s}})) {
*{$ens . $s} = sub { $o->${\$s}(@_) };
}
}
}
}
}
1;
__END__
####
use Math::BigInt; use Wrapobj Math::BigInt->new("100"); warn bmul(2); warn as_hex()
####
use Math::BigInt; use Wrapobj Math::BigInt::; warn new("0x100");