push object as @INC hook for all perls
Diab Jerius [Sun, 17 Nov 2013 02:25:17 +0000 (21:25 -0500)]
the object's INC method returns a sub for perl < 5.008 otherwise a filehandle

lib/App/FatPacker.pm

index 24abeaf..e742f6a 100644 (file)
@@ -268,9 +268,12 @@ sub fatpack_end {
   return stripspace <<'  END_END';
     s/^  //mg for values %fatpacked;
 
+    my $class = "${\\%fatpacked}";
+    *{"${class}::files"} = sub { keys %{$_[0]} };
 
     if ($] < 5.008) {
-       unshift @INC, sub {
+
+      *{"${class}::INC"} = sub {
          if (my $fat = $fatpacked{$_[1]}) {
            return sub {
              return 0 unless length $fat;
@@ -285,9 +288,6 @@ sub fatpack_end {
 
     else {
 
-      my $class = "${\\%fatpacked}";
-      unshift @INC, bless \%fatpacked, $class;
-      *{"${class}::files"} = sub { keys %{$_[0]} };
       *{"${class}::INC"} = sub {
        if (my $fat = $_[0]{$_[1]}) {
           open my $fh, '<', \$fat
@@ -299,6 +299,7 @@ sub fatpack_end {
 
     }
 
+    unshift @INC, bless \%fatpacked, $class;
   } # END OF FATPACK CODE
   END_END
 }