use more reasonable class name and protect against outer pragmas
[p5sagit/App-FatPacker.git] / lib / App / FatPacker.pm
index e742f6a..8b623ac 100644 (file)
@@ -268,13 +268,13 @@ sub fatpack_end {
   return stripspace <<'  END_END';
     s/^  //mg for values %fatpacked;
 
-    my $class = "${\\%fatpacked}";
+    my $class = 'FatPacked::'.(0+\%fatpacked);
+    no strict 'refs';
     *{"${class}::files"} = sub { keys %{$_[0]} };
 
     if ($] < 5.008) {
-
       *{"${class}::INC"} = sub {
-         if (my $fat = $fatpacked{$_[1]}) {
+         if (my $fat = $_[0]{$_[1]}) {
            return sub {
              return 0 unless length $fat;
              $fat =~ s/^([^\n]*\n?)//;
@@ -283,20 +283,18 @@ sub fatpack_end {
            };
          }
          return;
-      }
+      };
     }
 
     else {
-
       *{"${class}::INC"} = sub {
-       if (my $fat = $_[0]{$_[1]}) {
+        if (my $fat = $_[0]{$_[1]}) {
           open my $fh, '<', \$fat
             or die "FatPacker error loading $_[1] (could be a perl installation issue?)";
           return $fh;
         }
         return;
       };
-
     }
 
     unshift @INC, bless \%fatpacked, $class;
@@ -372,6 +370,8 @@ Mithaldu - Christian Walde (cpan:MITHALDU) <walde.christian@googlemail.com>
 
 dolmen - Olivier MenguĂ© (cpan:DOLMEN) <dolmen@cpan.org>
 
+djerius - Diab Jerius (cpan:DJERIUS) <djerius@cpan.org>
+
 Many more people are probably owed thanks for ideas. Yet
 another doc nit to fix.