NAME

DynScalar - closure-in-a-box for simple scalars

SYNOPSYS

use DynScalar;  # imports as dynamic()
use strict;
use vars '$name';

my $foo = dynamic { "Hello, $name!\n" };
for $name ("Jeff", "Joe", "Jonas") { print $foo }

DESCRIPTION

This module creates closures, and masks them as objects that stringify themselves when used. This allows you to make incredibly simplistic string templates:

use DynScalar 'delay';  # import as delay()
use strict;
use vars qw( $name $age $sex );

my $template = delay {
  "Hello, $name.  You're a good-looking $age-year-old $sex.\n"
};

while (my $rec = get_person()) {
  ($name,$age,$sex) = $rec->features;
  print $template;
}

You can embed arbitrarily complex code in the block.

CAVEATS

You should only use package variables in the block -- lexically scoped variables can not be seen.

AUTHOR

Jeff "japhy" Pinyan
CPAN ID: PINYAN
japhy@pobox.com
http://www.pobox.com/~japhy/