summaryrefslogtreecommitdiff
path: root/devel/p5-Eval-Closure/DESCR
blob: 5fcb4382f89a50231242dcb20c48febd11f6d9e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 can be quite slow,
especially if doing a large number of evals.

This module attempts to solve both of those problems. It provides
an eval_closure function, which evals a string in a clean environment,
other than a fixed list of specified variables. It also caches the
result of the eval, so that doing repeated evals of the same source,
even with a different environment, will be much faster (but note
that the description is part of the string to be evaled, so it must
also be the same (or non-existent) if caching is to work properly).