diff options
Diffstat (limited to 'lib/Reply/Plugin/LexicalPersistence.pm')
-rw-r--r-- | lib/Reply/Plugin/LexicalPersistence.pm | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/Reply/Plugin/LexicalPersistence.pm b/lib/Reply/Plugin/LexicalPersistence.pm index 44b2ef8..99c328c 100644 --- a/lib/Reply/Plugin/LexicalPersistence.pm +++ b/lib/Reply/Plugin/LexicalPersistence.pm @@ -22,8 +22,12 @@ then use C<$x> as expected in subsequent lines. sub new { my $class = shift; + my %opts = @_; + my $self = $class->SUPER::new(@_); $self->{env} = {}; + $self->{publisher} = $opts{publisher}; + return $self; } @@ -31,12 +35,6 @@ sub compile { my $self = shift; my ($next, $line, %args) = @_; - $args{environment} ||= {}; - $args{environment} = { - %{ $args{environment} }, - %{ $self->{env} }, - }; - my ($code) = $next->($line, %args); $self->{env} = { @@ -44,6 +42,8 @@ sub compile { %{ peek_sub($code) }, }; + $self->{publisher}->('lexical_environment', default => $self->{env}); + return $code; } |