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.