in reply to Re: problem with repeating function
in thread problem with repeating function

The error message:
Undefined subroutine &hc_url::call_httpd_exec called at /exlibris/meta +lib/m4_b/d +at01/vir_ext/hc_url.pm line 166.
is for my real program. The error code for my demo programs is :
Undefined subroutine &wrapper::call_httpd_exec called at demo.pm line +8.
hc_url isn't used. Does this change your answer?

Replies are listed 'Best First'.
Re^3: problem with repeating function
by shmem (Chancellor) on Sep 04, 2006 at 12:21 UTC
    Yes, the part w/regard to the error message changes.

    You do a require "wrapper" in package demo and in package demo2. demo2 is used by demo. The use means, that demo2 is compiled and executed before demo is even compiled to end.

    The docs for require state, that require doesn't include a file twice.

    So, wrapper is already loaded via demo2, so it lives in demo2. The require in demo just returns 1, no file is loaded. You'll see that your code works if you change call_httpd_exec in demo to demo2::call_httpd_exec.

    <update>
    OTOH, if you wrap require "wrapper" in demo into a BEGIN block and place it before use demo2, then the call to call_httpd_exec will fail in demo2, since it now lives in demo.

    Read require, use, again perltoot, perlmod, there BEGIN , CHECK, INIT and END... there are also modules which implement automatic exportation of functions, e.g. Spiffy.
    </update>

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
      Thanks a lot, your answer was very helpful, and it solved my problem until I figure out a better way to use this function (I might change it to a mudule).
      Cheers,
      Guy Naamati