---
name: "HTML::Template::Compiled::Reference"
section: "3pm"
platform: "linux"
package: "libhtml-template-compiled-perl"
version: "1.003-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTML::Template::Compiled::Reference"
---

# HTML::Template::Compiled::Reference(3pm)

A quick reference for HTML::Template::Compiled syntax

## NAME

HTML::Template::Compiled::Reference - A quick reference for HTML::Template::Compiled syntax

## TAGSTYLES

```
    <TMPL_IF var><TMPL_VAR foo></tmpl_if var>
    <!-- TMPL_IF var --><!-- TMPL_VAR foo --><!-- /tmpl_if var -->
    <%if var %><%= foo %><%/if var %>
```

Optional tagstyle 'tt':

```
    [%if var %][%= foo %][%/if var %]
```

## ACCESSING VARIABLES

```
    <%= _.foo %>
    outputs foo in the cuurent position of the stash and is the same as
    <%= foo %>
    <%= .config.url %>
    goes to root of parameter stash; like $params->{config}->{url}
    <%= ..foo %>
    goes one level up in stash
    <%= list[3].keyname.method %>
    acts like: $stash->[3]->{keyname}->method
```

## TAGS

- VAR

  ```
      <%var foo%> or <%= foo%>
  ```

- IF, IF\_DEFINED, UNLESS, ELSIF, ELSE

  conditions like in Perl

- LOOP, WHILE, EACH

  for-loop and while-loop like in Perl.

  ```
      <%loop cds%><%= __counter__%>. Title: <%= _.title%><%/loop cds%>
      <%loop cds join=", " %><%= _.title%><%/loop cds%>
      <%while resultset.next%><%= __counter__%>. <%= _.foo %><%/while %>
      <%each hashref%><%= __key__ %>=<%= __value__ %><%/each %> (sorted alphanumeric)
      <%each hashref sort=alpha %><%= __key__ %>=<%= __value__ %><%/each %> (sorted alphanumeric)
      <%each hashref sort=num %><%= __key__ %>=<%= __value__ %><%/each %> (sorted numeric)
      <%each hashref sort=0 %><%= __key__ %>=<%= __value__ %><%/each %> (not sorted)
  ```

- WITH

  ```
      <%with cds[0].artist.fanclub%><%= _.address%><%= _.homepage%><%/with %>
  ```

- INCLUDE, INCLUDE\_VAR

  ```
      <%include template.htc%>
      <%include_var param_with_template_name%>
  ```

- COMMENT, VERBATIM, NOPARSE

  ```
      <%comment explanation %>
      This will not appear in the rendered template.
      blah blah...
      <%/comment explanation %>
  ```

- SWITCH, CASE

  ```
      <%switch .config.language%>
      <%case de%>Hallo
      <%case es%>Hola
      <%case en,default%>Hello
      <%/switch .config.language%>
  ```

- PERL

  See section Perl in HTML::Template::Compiled

## ATTRIBUTES

Each attribute can be written as

```
    attribute=foo
    attribute="some thing"
    attribute='some "thing"'
```

- NAME

  You can omit the `'name='` here.

  ```
      <%if var%>var<%elsif name=var2%>var4<%/if%>
  ```

  Can be used in all tags.

- ESCAPE

  ```
      <%= message escape=html %>
      <%= params escape=url %>
      <%= params escape=js %>
      <%= some_var escape=dump|html%>
  ```

  Can be used in `"VAR"`-tags.

- DEFAULT

  ```
      <%= this.var.might_be_undef default="my fault" %>
  ```

  Can be used in `"VAR"`-tags.

- ALIAS

  ```
      <%loop cds alias="cd" %><%= $cd.title %><%/loop cds %>
  ```

  Can be used in `"LOOP"` and `"WHILE"`. Works like "SET\_VAR" and is short for

  ```
      <%loop cds %><%set_var cd value=_ %><%= cd.title %><%/loop cds %>
  ```

  Useful for nested loops.

- SET\_VAR

  ```
      <%set_var myvar value=.another.var %>
      <%set_var myvar2 expr="60 * 60 * 24" %>
  ```

  This creates a variable similar to a package var with **local()** in perl.

- USE\_VARS

  ```
      <!-- recognize myvar and myvar2 as variables not parameter stash -->
      <%use_vars myvar,myvar2 %>
      myvar: <%= myvar %>
  ```

- JOIN

  ```
      <%loop cds join=", " %><%= _.title%><%/loop cds%>
  ```

  can be used in `"LOOP"`

- BREAK

  ```
      <%loop cds break="3" %>
      <%= _.title%><%if __break__ %>\n</%if %>
      <%/loop cds%>
  ```

  Sets `"__break__"` to 1 every xth loop. Can be used in `"LOOP"`, `"WHILE"` and `"EACH"`

## OPTIONS

- (loop)\_context\_vars

  ```
      <%= __index__         %> the current loop index starting at 0
      <%= __counter__       %> the current loop index starting at 1
      <%= __first__         %> true if first iteration
      <%= __last__          %> true if last iteration
      <%= __odd__           %> true if __counter__ is odd
      <%= __inner__         %> true if not last or first iteration
      <%= __key__           %> the key of an EACH iteration
      <%= __value__         %> the value of an EACH iteration
      <%= __break__         %> see L<"BREAK"> above
      <%= __filename__      %> filename of current template (since 0.91_001)
      <%= __filenameshort__ %> short filename of current template (since 0.91_001)
  ```
