[rt.cpan.org #60622] Handle conditional loading
[p5sagit/App-FatPacker.git] / lib / App / FatPacker / Trace.pm
index 6d1f68a..1da5943 100644 (file)
@@ -4,14 +4,28 @@ use strict;
 use warnings FATAL => 'all';
 use B ();
 
+my $trace_file;
+my %initial_inc;
+
 sub import {
-  my $open = $_[1] || '>>fatpacker.trace';
-  open my $trace, $open
-    or die "Couldn't open ${open} to trace to: $!";
-  unshift @INC, sub {
-    print $trace "$_[1]\n";
-  };
+  $trace_file = $_[1] || '>>fatpacker.trace';
+  # For filtering out our own deps later.
+  # (Not strictly required as these are core only and won't have packlists, but 
+  # looks neater.)
+  %initial_inc = %INC;
   B::minus_c;
 }
 
+CHECK {
+  return unless $trace_file; # not imported
+
+  open my $trace, $trace_file
+      or die "Couldn't open $trace_file to trace to: $!";
+
+  for my $inc(keys %INC) {
+    next if exists $initial_inc{$inc};
+    print $trace "$inc\n";
+  }
+}
+
 1;