*setScript = *IWL::Script::setScript; delete $::{'IWL::'}{'Script::'}{'setScript'}; no warnings qw(redefine); sub IWL::Script::setScript { my ($self, $param) = @_; if (ref $param eq 'CODE') { *setScript{CODE}->($self, $p2js->covert($param)); } else { *setScript{CODE}->($self, $param); } }