in reply to Re: Same function multiples unknown modules
in thread Same function multiples unknown modules

Thanks. This looks promising. At the moment I have two subdirectories where these .pm files are: Main and Addins. What would need to be changed to use only these two subdirectories. Not the root driectory where the main script is located, or the perl root, only the two subdirectories?
  • Comment on Re^2: Same function multiples unknown modules

Replies are listed 'Best First'.
Re^3: Same function multiples unknown modules
by Zaxo (Archbishop) on Sep 19, 2005 at 23:46 UTC

    At the top of the loop, the line,

    next unless m/^Main|Addins/;
    will restrict attention to those two top level namespaces.

    After Compline,
    Zaxo

      Thanks again Zaxo,
      I ran a test using this, however, the $eval fails on me (in a browser I get Error 500)...

      I use logging in the scripting to catch errors as well as MySQL calls (and anything else I choose to log). The log shows the following when the script is executed:

      Sep 26, 2005 (10:49:52) : ERROR SITUATION: Interface Crash, error message:
      syntax error at Main/Menu.pm line 101, near "$_::runonce(" Compilation failed in require at d:\PROGRA~1\APACHE~1\apache\cgi-bin\intern2.cgi line 31.

      In the file Main/Menu.pm I have your code as:
      sub sub_menus { for (keys %INC) { next unless m/^Main|Addins/; s!/!::!g; s/\.pm$//; #print "<font face=\"Arial\" size=\"2\">$_<br></font>\n"; eval { $_::runonce() }; } }
      The function, runonce (sub runonce), is available in exactly one file. Perhaps I shouldn't use sub, rather someother addressing scheme that I'm unawear of?

      If I comment out the eval line and use the print line, execution runs clean (with the exception of runonce not running).

      I assume the problem lye with the logging I have to catch problems and log them:
      $SIG{__DIE__} = \&error_crash_trapper; $SIG{__WARN__} = \&warn_crash_trapper;
      Is there any other way to achieve this? Essentially I'm looking for simplicity and the use of a 'dummy' routine that doesn't rely on hard coded information which then allows for dynamic implementation.