use bigint; package MyPackage; sub F; ... package Math::BigInt; no warnings 'redefine'; use overload '*' => sub { return ref($_[1]) eq 'MyPackage' ? MyPackage::F($_[0], $_[1]) : $_[0]->copy->bmult($_[1]); };