package declarations outside of string eval doesn't work on 5.8 0.07
Jesse Luehrs [Fri, 3 Feb 2012 22:04:20 +0000 (16:04 -0600)]
lib/Eval/Closure.pm

index ccd2bbc..0fa6aa8 100644 (file)
@@ -196,12 +196,8 @@ sub _make_compiler {
     return @{ _clean_eval($source) };
 }
 
-$Eval::Closure::SANDBOX_ID = 0;
-
 sub _clean_eval {
-    $Eval::Closure::SANDBOX_ID++;
     return eval <<EVAL;
-package Eval::Closure::Sandbox_$Eval::Closure::SANDBOX_ID;
 local \$@;
 local \$SIG{__DIE__};
 my \$compiler = eval \$_[0];
@@ -210,10 +206,14 @@ my \$e = \$@;
 EVAL
 }
 
+$Eval::Closure::SANDBOX_ID = 0;
+
 sub _make_compiler_source {
     my ($source, @capture_keys) = @_;
+    $Eval::Closure::SANDBOX_ID++;
     my $i = 0;
     return join "\n", (
+        "package Eval::Closure::Sandbox_$Eval::Closure::SANDBOX_ID;",
         'sub {',
         (map {
             'my ' . $_ . ' = ' . substr($_, 0, 1) . '{$_[' . $i++ . ']};'