12 lines
693 B
Text
12 lines
693 B
Text
String eval is often used for dynamic code generation. For instance,
|
|
Moose uses it heavily, to generate inlined versions of accessors and
|
|
constructors, which speeds code up at runtime by a significant amount.
|
|
String eval is not without its issues however - it's difficult to
|
|
control the scope it's used in (which determines which variables are in
|
|
scope inside the eval), and it's easy to miss compilation errors, since
|
|
eval catches them and sticks them in $@ instead.
|
|
|
|
This module attempts to solve these problems. It provides an
|
|
eval_closure function, which evals a string in a clean environment,
|
|
other than a fixed list of specified variables. Compilation errors are
|
|
rethrown automatically.
|