http://www.perlmonks.org?node_id=975161

grondilu has asked for the wisdom of the Perl Monks concerning the following question:

I have a package where I redefine the multiplication operator defined in Math::BigInt:

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]); };

Unfortunatly the 'no warnings "redefine"' doesn't suppress a 'subroutine Math::BigInt::(* redefined at...' warning.

What am I missing?

Replies are listed 'Best First'.
Re: Can not remove 'redefined' warning (no)
by tye (Sage) on Jun 08, 2012 at 13:56 UTC

    warnings.pm has lexical scope and so your use of it has no impact on the actual assignment code inside of overload.pm.

    package Math::BigInt; no overload '*'; use overload '*' => sub { ... };

    - tye        

      It works! Thanks a lot :) !