NAME
Eval::Context - Evalute perl code in context wrapper
SYNOPSIS
use Eval::Context ;
my $context = new Eval::Context(PRE_CODE => "use strict;\nuse warnings;\n") ;
# code will be evaluated with strict and warnings loaded in the context.
$context->eval(CODE => 'print "evaluated in an Eval::Context!" ;') ;
$context->eval(CODE_FROM_FILE => 'file.pl') ;
DESCRIPTION
This module define a subroutine that let you evaluate Perl code in a specific context. The code can be passed directly as a string or as a file name to read from.
SUBROUTINES/METHODS
new(@options)
Create an Eval::Context object. The object is used as a repository of "default" values. the values can be temporarily overridden during the eval call. All arguments have default values.
my $context = new Eval::Context() ; # default context
my $context2= new Eval::Context
(
NAME => 'libraries evaluation context',
PACKAGE => 'libraries',
PRE_CODE => 'use strict ;\n"
POST_CODE => 'some_code_automatically_run() ;'
PERL_EVAL_CONTEXT => undef, # libraries will always evaluated in scalar context
INSTALL_SUBS =>
{
PrintHi => sub {print "hi\n" ;},
TwoPlusTwo => sub {4},
},
INTERACTION =>
{
INFO => \&sub_info,
WARN => \&sub_warn,
DIE => \&sub_die,
},
DISPLAY_SOURCE_IN_CONTEXT => 1, #useful when debuging
) ;
Arguments
@option - setup data for the object
NAME - use when displaying information about the object. Set automatically if not set.
PACKAGE - the package the code passed to eval will be in. If not set, main is used.
PRE_CODE - code prepended to the code passed to eval
POST_CODE - code appended to the code passed to eval
PERL_EVAL_CONTEXT - the context to eval code in (void, scalar, list). Works as wantarray
INSTALL_SUBS - subs that will be available in the eval.
A hash where the key is a function name and the value a code reference.
INTERACTION
Lets you define subs used to interact with the user.
INTERACTION => { INFO => \&sub, WARN => \&sub, DIE => \&sub, }
- INFO
-
This sub will be used when displaying information.
- WARN
-
This sub will be used when a warning is displayed.
- DIE
-
Used when an error occurs.
The functions default to:
INFO => CORE::print
WARN => Carp::carp
DIE => Carp::confess
FILE - the file where the object has been created. Set automatically if not set. this is practical if you want to wrap the object.
LINE - the line where the object has been created. Set automatically if not set.
DISPLAY_SOURCE_IN_CONTEXT - if set, the code to evaluated will be displayed before evaluation
Return
an Eval::Context object.
Setup
Helper sub called by new. This is considered private.
CheckOptionNames
Verifies the named options passed to the members of this class. Calls {INTERACTION}{DIE} in case of error. This shall not be used directly.
SetInteractionDefault
This shall not be used directly.
CanonizeName
This shall not be used directly.
eval(@options)
Evaluates Perl code, passed as a string or read from a file, in the context.
Evaluation context of the code (void, scalar, list) is the same as the context this subroutine was called in or in the context defined by PERL_EVAL_CONTEXT if that option is present.
my $context = new Eval::Context(PRE_CODE => "use strict;\nuse warnings;\n") ;
$context->eval(CODE => 'print "evaluated in an Eval::Context!";') ;
$context->eval(CODE_FROM_FILE => 'file.pl') ;
Arguments
The options passed to eval override the options passed to new. the override is temporary during the duration of this call.
@options - Any of the constructor options. one the following options (mandatory).
CODE - a string containing perl code (valid or you'll get errors)
CODE_FROM_FILE - a file containing perl code
You can also override any option passed to the constructor during this call.
Return
What the code to be evaluated returns
GetPackageName
This shall not be used directly.
BUGS AND LIMITATIONS
None so far.
AUTHOR
Khemir Nadim ibn Hamouda
CPAN ID: NKH
mailto:nadim@khemir.net
LICENSE AND COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Eval::Context
You can also look for information at:
AnnoCPAN: Annotated CPAN documentation
RT: CPAN's request tracker
Please report any bugs or feature requests to L <bug-eval-context@rt.cpan.org>.
We will be notified, and then you'll automatically be notified of progress on your bug as we make changes.
Search CPAN