in reply to Re: Using eval: $@ isn't returning the error I expect
in thread [SOLVED] Using eval: $@ isn't returning the error I expect

Thanks, haukex. I tried this:

eval "use cPanelUserConfig; 1" or warn "Didn't load cPanelUserConfig: $@";

as a replacement for the explicit "use" command:

use cPanelUserConfig;

and it ran fine on my own machine, but failed on the host server because on that machine cPanelUserConfig is required in order that a different module be loaded after cPanelUserConfig is loaded. (They treat user-installed modules differently from modules that are part of their default setup.) It would seem that the "eval" command isn't actually loading the cPanelUserConfig module on the host server. Only the explicit "use" statement seems to work there.

Replies are listed 'Best First'.
Re^3: Using eval: $@ isn't returning the error I expect
by haukex (Archbishop) on Feb 20, 2020 at 00:35 UTC
    It would seem that the "eval" command isn't actually loading the cPanelUserConfig module on the host server. Only the explicit "use" statement seems to work there.

    If it's not showing a warning, then it is loading it, but there's a difference: eval STRING delays the execution of the use until runtime, while normally it would run at compile time. Try adding a BEGIN { ... } block around the whole line, that'll move the execution back into compile time (see BEGIN in perlmod).

      BINGO!!

      I moved it to the BEGIN block that was already in place, and that did the trick.

      Thanks mucho!