NAME
Cac::ObjectScript - Source Filter for embedding ObjectScript expressions in Perl
SYNOPSIS
use Cac::ObjectScript;
my $a = 1;
$a = <? :a +1:>:
<:K ^foobar(:a):>
no Cac::ObjectScript; # disable source filter
DESCRIPTION
This module allows you to embed ObjectScript expressions enclosed in "<?" ... ":>" or ObjectScript statements in "<:" ... ":>"
The expressions are not evaluated, they are compiled into ObjectScript functions for everlasting speed.
You can use bind variables using :var
notation.
Generated routines are named CPERLxxxxxxxxxxxxxxxxxxxxxxxxx
where each x
stands for a hexadecimal digit.
This is currently the md5sum (except last 7 digits) over the version of this module and the expression.
Anyway this may change (do not rely on that :), but I gurarantee that I only generate routines named "CPERL*".
If you just want to evaluate a Cache-String (i.e: a non constant expression) use CacEval $string
of the Cac
package.
You could also the following instead:
my $eval = "K GeorgeBush"; # this is a political statement :)
<: @:eval:>
but it doesn't look so fine :) If you got this, you've probably understand that module.
If you insist to write order-loops, try something like this:
my $a="";
do {
$a = <?$order(^rOBJ(:a)):>;
print "$a\n";
} while length $a;
EXPORTS
none.
BUGS
Design: This Module creates a routine for every <[:?] ... :> expression.
It should create a single routine for each Perl source file.
(The current design "eats" routine-buffers)
I'm going to change that but that's not too high on my priority list.
(Finding a girlfriend is :)
SEE ALSO
Cac, Cac::Global, Cac::Routine, Cac::Util, Cac::Bind.
AUTHOR
Stefan Traby <stefan@hello-penguin.com>
http://hello-penguin.com