The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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