1 package Devel::REPL::Plugin::LexEnv;
4 use namespace::clean -except => [ 'meta' ];
5 use Lexical::Persistence;
7 has 'lexical_environment' => (
8 isa => 'Lexical::Persistence',
12 default => sub { Lexical::Persistence->new }
15 around 'mangle_line' => sub {
17 my ($self, @rest) = @_;
18 my $line = $self->$orig(@rest);
19 my $lp = $self->lexical_environment;
20 return join('', map { "my $_;\n" } keys %{$lp->get_context('_')}).$line;
23 around 'execute' => sub {
25 my ($self, $to_exec, @rest) = @_;
26 my $wrapped = $self->lexical_environment->wrap($to_exec);
27 return $self->$orig($wrapped, @rest);