in reply to Subroutine new redefined

You are posting far too much code. Please reduce it to something that still reproduces the problem but is much shorter.

My guess is that one of your modules exports a subroutine new. As there is no way that I see that one of the modules you show is exporting a subroutine named new, it must be the LoadProperties module that exports a subroutine new. This triggers (rightfully) the warning about redefining that subroutine later on in Search2.

Also, what coding style is this and what problem is it supposed to solve:

BEGIN { ... @DB::EXPORT_OK = qw(new say_hello); ... }

The DB package is magic and reserved for the Perl debugger. Exporting symbols is usually done through global variables in the package doing the exporting. Methods of an object should not be exportable at all in any case. In my opinion, only your SharedVariables module should export its shared variable names, and none of the other modules should export anything.

Replies are listed 'Best First'.
Re^2: Subroutine new redefined
by *alexandre* (Scribe) on Dec 28, 2018 at 13:59 UTC
    Thx, I will make the change you are cited !