diff -bu ./lib/Eval/Closure.pm~ ./lib/Eval/Closure.pm
--- ./lib/Eval/Closure.pm~	2016-05-29 06:43:10.000000000 +0200
+++ ./lib/Eval/Closure.pm	2017-12-20 14:09:33.000000000 +0100
@@ -27,11 +27,13 @@
     $args{source} = _canonicalize_source($args{source});
     _validate_env($args{environment} ||= {});
 
-    $args{source} = _line_directive(@args{qw(line description)})
+    my @args = @args{qw(line description)};
+    $args{source} = _line_directive(@args)
                   . $args{source}
         if defined $args{description} && !($^P & 0x10);
 
-    my ($code, $e) = _clean_eval_closure(@args{qw(source environment alias)});
+    @args = @args{qw(source environment alias)};
+    my ($code, $e) = _clean_eval_closure(@args);
 
     if (!$code) {
         if ($args{terse_error}) {
@@ -111,7 +113,8 @@
     my ($compiler, $e) = _make_compiler($source, $alias, @capture_keys);
     return (undef, $e) unless defined $compiler;
 
-    my $code = $compiler->(@$captures{@capture_keys});
+    my @keys = @$captures{@capture_keys};
+    my $code = $compiler->(@keys);
 
     if (!defined $code) {
         return (