Next time you have this kind of problem, consider this technique instead:
require Carp;
$SIG{__WARN__} = sub { Carp::cluck(@_) };
It will save you a lot of time trying to patch your copy of a module.
You can also just start your script with "perl -d" then "c" since "o warn=1" is the default which means that you'll get a stack dump tacked on to each warning you get. You can probably even get the debugger to stop at the point of the warning so that you can look around and figure out the source of the problem:
perl -d ...
> $SIG{__WARN__} = sub { $DB::single = 1; }
> c