diff options
Diffstat (limited to 'lib/Class/Refresh.pm')
-rw-r--r-- | lib/Class/Refresh.pm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/Class/Refresh.pm b/lib/Class/Refresh.pm index 24569ab..4d3cb2f 100644 --- a/lib/Class/Refresh.pm +++ b/lib/Class/Refresh.pm @@ -51,6 +51,30 @@ this will likely not work. our %CACHE; +sub import { + my $package = shift; + my %opts = @_; + + if ($opts{track_require}) { + require Devel::OverrideGlobalRequire; + require B; + Devel::OverrideGlobalRequire::override_global_require(sub { + my $next = shift; + my ($file) = @_; + + my $ret = $next->(); + + $package->_update_cache_for($file) + # require v5.8.1; + unless ref(\$file) eq 'VSTRING' + # require 5.008001; + || !(B::svref_2object(\$file)->FLAGS & B::SVf_POK()); + + return $ret; + }); + } +} + =method refresh The main entry point to the module. The first call to C<refresh> populates a |