This seems a bug in Lexical :: Persistence , which Devel :: REPL is used to control the lexical environment, continuing a few evals.
Here is a demonstration of an error without Devel :: REPL. This code incorrectly creates a value of $abc10, even if it is in the inner area.
use strict;
use warnings;
use Lexical::Persistence;
my $environment = Lexical::Persistence->new;
$environment->call(sub {
my $foo = shift;
{ my $abc = 10 };
return $foo;
});
print $environment->get_context('_')->{'$abc'};
I reported an error against the module, let's see what happens!
, ( Devel:: REPL), Eval:: WithLexicals :
use strict;
use warnings;
use Eval::WithLexicals;
my $environment = Eval::WithLexicals->new;
print $environment->eval('{ my $abc = 10 ; $abc }'), "\n";
print $environment->eval('$abc'), "\n";
10, , eval Global symbol "$abc" requires explicit package name.