Hi all,

I once tried to implement nested templates with HTML::Template.
Below is an example of what I came up with:

     1  #!/usr/local/bin/perl
     2
     3  use strict;
     4  use warnings;
     5  use HTML::Template;
     6
     7  my $text = <<__;
     8  This is a <TMPL_VAR NAME="color"> bird.
     9  This is a <TMPL_VAR NAME="<TMPL_VAR NAME="color">"> bird.
    10  This is a <TMPL_VAR NAME="<TMPL_VAR NAME="<TMPL_VAR
NAME="color">">"> bird.
    11  __
    12
    13  my $output = '';
    14  my $sref = \$text;
    15  my $count;
    16
    17  while (1) {
    18      $count++;
    19
    20      my $tmpl = HTML::Template->new(
    21          scalarref         => $sref,
    22          strict            => 0,
    23          die_on_bad_params => 0,
    24          case_sensitive    => 1,
    25          );
    26
    27      $tmpl->param( color => 'blue' );
    28      $tmpl->param( blue => 'BLUE' );
    29      $tmpl->param( BLUE => '**BLUE**' );
    30
    31      $text = $tmpl->output();
    32
    33      print "\n$count:\n$text";  # debug
    34
    35      last if $output eq $text;  # no changes since last time
    36      $output = $text;
    37
    38  }
    39
    40  print "\nfinal: \n$output";
    41
    42  __END__

1:
This is a blue bird.
This is a <TMPL_VAR NAME="blue"> bird.
This is a <TMPL_VAR NAME="<TMPL_VAR NAME="blue">"> bird.

2:
This is a blue bird.
This is a BLUE bird.
This is a <TMPL_VAR NAME="BLUE"> bird.

3:
This is a blue bird.
This is a BLUE bird.
This is a **BLUE** bird.

4:
This is a blue bird.
This is a BLUE bird.
This is a **BLUE** bird.

final:
This is a blue bird.
This is a BLUE bird.
This is a **BLUE** bird.

I would like a better way of doing this.  The calls to
new() on line 20, the copies on lines 31 and 36, and
the compares on line 36 just seem all a bit much for
what ought (I think) to be more like

1 while s/from/to/g;

Is there a better way?

Apologies if this has been beat to death in the past ...

Regards,

Brad

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Html-template-users mailing list
Html-template-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/html-template-users

Reply via email to