summaryrefslogtreecommitdiffstats
path: root/lib/Class/Refresh.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Class/Refresh.pm')
-rw-r--r--lib/Class/Refresh.pm24
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