X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FEval-WithLexicals.git;a=blobdiff_plain;f=lib%2FEval%2FWithLexicals.pm;fp=lib%2FEval%2FWithLexicals.pm;h=fab265c66655b6f419830f6cf6e539a49e2ec3f5;hp=31703e65713c85c9635e1726d8109b8b1130a66a;hb=73a98f1cea175c7451ab0809e9712c5fe903ca12;hpb=67532400c8df767b0e45c029b6eb3fa065822295 diff --git a/lib/Eval/WithLexicals.pm b/lib/Eval/WithLexicals.pm index 31703e6..fab265c 100644 --- a/lib/Eval/WithLexicals.pm +++ b/lib/Eval/WithLexicals.pm @@ -25,6 +25,10 @@ has in_package => ( is => 'rw', default => quote_sub q{ 'Eval::WithLexicals::Scratchpad' } ); +has prelude => ( + is => 'rw', default => quote_sub q{ 'use strictures 1;' } +); + sub eval { my ($self, $to_eval) = @_; local *Eval::WithLexicals::Cage::current_line; @@ -32,7 +36,8 @@ sub eval { local *Eval::WithLexicals::Cage::grab_captures; my $setup = Sub::Quote::capture_unroll('$_[2]', $self->lexicals, 2); my $package = $self->in_package; - local our $current_code = qq!use strictures 1; + my $prelude = $self->prelude; + local our $current_code = qq!${prelude} ${setup} sub Eval::WithLexicals::Cage::current_line { package ${package}; @@ -155,6 +160,7 @@ Eval::WithLexicals - pure perl eval with persistent lexical variables lexicals => { '$x' => \1 }, # default {} in_package => 'PackageToEvalIn', # default Eval::WithLexicals::Scratchpad context => 'scalar', # default 'list' + prelude => 'use warnings', # default 'use strictures 1' ); =head2 eval @@ -179,6 +185,14 @@ Eval::WithLexicals - pure perl eval with persistent lexical variables $eval->context($new_context); # 'list', 'scalar' or 'void' +=head2 prelude + +Code to run before evaling code. Loads L by default. + + my $current_prelude = $eval->prelude; + + $eval->prelude(q{use warnings}); # only warnings, not strict. + =head1 AUTHOR Matt S. Trout