On 8/12/05, Jonathan Vanasco <[EMAIL PROTECTED]> wrote:
>
> If/else and loops are already 'too much' -- I essentially just want
> variable substitution. I want designers to be able to work on a page
> and not need to know anything about the code/logic. Names go here,
> dates go here, etc. I have a bunch of custom mod_perl stuff that
> handles everything right now. I just want to split the code out of the
> handler routines.
Just pick a naming convention and run what you get back from the
designers through the substitution operator. I like square brackets
around the variable names, since that convention has some history.
my $output = $TemplateCache{$template_name};
$output =~ s/\[(\w+)\]/$InsertableVariables{$1}/g;
print $output;
If all you want is variable substitution, just do variable substitution.
If you trust your page designers, have them use dollar-signs instead
of square brackets and things get even easier, with the insertables
as perl variables in your scope:
$output = eval << "EOE";
<<"__END_OF_TEMPLATE"
$TemplateCache{$template_name}
__END_OF_TEMPLATE
EOE
It is not possible to define an abstraction around these tools that
isn't more trouble than its worth, which is why there is no
"Really::Lightweight::Templating::Engine::That::Just::Does::Variable::Substitution"
on CPAN, although it might be appropriate in Acme::.
I have defined subroutines such as
sub print_template($$){
my ($template, $hashref) = @_;
ref $hashref or croak "usage: print_template($template, $hashref);
$template =~ s/\[(\w+)\]/$hashref->{$1}/g;
print $template;
};
and used them repeatedly within perl-driven logic, to print table lines
defined with a template, for instance.
You have to parse the repeated parts out of what your page designer gives you
somehow, but I expect you're going to have to massage your designer's output
even if you use a templating engine with its own control flow.
SSI sounds like PHP.