logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Module::Refresh - Refresh %INC files when updated on disk

Bugs

       When we walk the symbol table to whack reloaded subroutines, we don't have a good way to invalidate the
       symbol table properly, so we mess up on things like global variables that were previously set.

Description

       This module is a generalization of the functionality provided by Apache::StatINC and Apache::Reload.
       It's designed to make it easy to do simple iterative development when working in a persistent
       environment.

       It does not require mod_perl.

   new
       Initialize the module refresher.

   refresh
       Refresh all modules that have mtimes on disk newer than the newest ones we've got.  Calls "new" to
       initialize the cache if it had not yet been called.

       Specifically, it will renew any module that was loaded before the previous call to "refresh" (or "new")
       and has changed on disk since then.  If a module was both loaded for the first time and changed on disk
       between the previous call and this one, it will not be reloaded by this call (or any future one); you
       will need to update the modification time again (by using the Unix "touch" command or making a change to
       it) in order for it to be reloaded.

   refresh_module_if_modified$module
       If $module has been modified on disk, refresh it. Otherwise, do nothing

   refresh_module$module
       Refresh a module.  It doesn't matter if it's already up to date.  Just do it.

       Note that it only accepts module names like "Foo/Bar.pm", not "Foo::Bar".

   unload_module$module
       Remove a module from %INC, and remove all subroutines defined in it.

   mtime$file
       Get the last modified time of $file in seconds since the epoch;

   update_cache$file
       Updates the cached "last modified" time for $file.

   unload_subs$file
       Wipe out subs defined in $file.

Name

       Module::Refresh - Refresh %INC files when updated on disk

See Also

       Apache::StatINC, Module::Reload

Synopsis

           # During each request, call this once to refresh changed modules:

           Module::Refresh->refresh;

           # Each night at midnight, you automatically download the latest
           # Acme::Current from CPAN.  Use this snippet to make your running
           # program pick it up off disk:

           $refresher->refresh_module('Acme/Current.pm');

See Also