http://qs1969.pair.com?node_id=895644


in reply to Adding code to a Perl program without stopping it

Yup, do, require, Apache::StatINC, Module::Reload, Module::Pluggable, Plack::Loader::Shotgun

Replies are listed 'Best First'.
Re^2: Adding code to a Perl program without stopping it
by spx2 (Deacon) on Apr 04, 2011 at 00:18 UTC

    Module::Reload->check() basically does:

    • delete $INC{module_name};
    • require 'module_name' ;

    but only if the modified_time of the package has changed on disk, which is very nice, Module::Reload works properly.

    However, what if you delete a sub from a module while running the program, the function will remain loaded. That needs to be fixed in Module::Pluggable.

    I took a look at Apache::StatINC and it does the same as Module::Reload except it does delete the subs that are gone using this:

    • $class->Apache::Symbol::undef_functions( undef, 1 );

    However, I guess Apache::StatINC can be use only if you're writing a web app deployed using Apache. What if you want to write a non-web app(an IRC bot for example) ?

    Plack::Loader::Shotgun I wasn't able to check out because I'm not familiar with Plack