From 79fe1ab8e547951f254e387eb81a910a8196c558 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 4 Jul 2013 14:22:19 -0400 Subject: alias lexicals to their actual values this makes them work more correctly with closures, and variables in the environment that come from other locations (like in Carp::Reply) --- lib/Reply/Plugin/Defaults.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/Reply/Plugin/Defaults.pm b/lib/Reply/Plugin/Defaults.pm index 991b807..adf5c0e 100644 --- a/lib/Reply/Plugin/Defaults.pm +++ b/lib/Reply/Plugin/Defaults.pm @@ -13,6 +13,7 @@ use warnings; use base 'Reply::Plugin'; +use Devel::LexAlias 'lexalias'; use Eval::Closure; sub new { @@ -52,12 +53,18 @@ sub compile { my $prefix = "package $self->{package};\n$PREFIX"; - return eval_closure( + my $code = eval_closure( source => "sub {\n$prefix;\n$line\n}", terse_error => 1, environment => $env, %args, ); + + for my $name (keys %$env) { + lexalias($code, $name, $env->{$name}); + } + + return $code; } sub lexical_environment { -- cgit v1.2.3-54-g00ecf