Config

new時だけでなく、process時も第4引数として指定できます、
一度processを行うと、そのインスタンスは設定を保持し続けます。
また、new時に指定できるオプションとprocess時のオプションに全く違いはありません。

INCLUDE_PATH

入力元の指定やINCLUDE要素でファイルを読むときファイルを走査するディレクトリ、
リストリファレンスで指定するが、スカラーで単体を指定する事もできる。

#!/usr/bin/perl
my $t = Template::Like->new({ INCLUDE_PATH => ['abc', 'def'] });
$t->process("index.tt", $param, $output);
# abc/index.tt def/index.tt の順で走査される。

OUTPUT_PATH

出力先の指定

#!/usr/bin/perl
my $t = Template::Like->new({ OUTPUT_PATH => '/home/xxxx/public_html' });
$t->process("index.tt", $param, "index.html");

ABSOLUTE

入力元の階層制限です、標準では/等で絶対参照を許しませんが、
この設定を1にすると、絶対参照を指定出来るようになります。

#!/usr/bin/perl
my $t = Template::Like->new({ ABSOLUTE => 1 });
$t->process("/home/xxx/tmpl2/index.tt", $param, "index.html");
$t->process("/var/log/httpd.log", $param, "index.html");

RELATIVE

入力元の階層制限です、標準では../等で上に上がる事を許しませんが、 この設定を1にすると、上の階層を指定出来るようになります。

#!/usr/bin/perl
my $t = Template::Like->new({ RELATIVE => 1 });
$t->process("../tmpl2/index.tt", $param, "index.html");
$t->process("../../var/log/httpd.log", $param, "index.html");

テンプレートのINCLUDE要素の指定も同様に影響を受けます。

<% INCLUDE ../../var/log/httpd.log %>

TAG_STYLE

要素の書法です。

使える指定一覧
template    [% ... %]               (default)
template1   [% ... %] or %% ... %%  (TT version 1)
metatext    %% ... %%               (Text::MetaText)
star        [* ... *]               (TT alternate)
php         <? ... ?>               (PHP)
asp         <% ... %>               (ASP)
mason       <% ...  >               (HTML::Mason)
html        <!-- ... -->            (HTML comments)

指定例

#!/usr/bin/perl
my $t = Template::Like->new({ TAG_STYLE => "html" });
$t->process("../tmpl2/index.tt", $param, "index.html");

テンプレート側

<!-- var -->

START_TAG / END_TAG

指定例

#!/usr/bin/perl
my $t = Template::Like->new({ START_TAG => "@--", END_TAG => "--@" });
$t->process("../tmpl2/index.tt", $param, "index.html");

テンプレート側

@-- var --@

FILTERS

フィルターを記述します。

#!/usr/bin/perl
my $t = Template::Like->new({
    FILTERS => {
        lc => sub { lc($_[0]) },
        uc => \&uc
   }
});
$t->process("index.tt", { var => "abCD" }, "index.html");
sub uc { return uc($_[0]); }

テンプレート側

<!-- var | lc -->
<!-- var | uc -->
<!-- var -->

出力結果

abcd
ABCD
abCD

LOAD_FILTERS

フィルターを持つオブジェクトを渡します。

#!/usr/bin/perl
{
  package Test::Filters;
  use strict;
  sub new {
    return bless {}, $_[0];
  }
  sub uc {
    my $self = shift;
    my $str = shift;
    return uc($str);
  }
  sub lc {
    my $self = shift;
    my $str = shift;
    return lc($str);
  }
}

my $t = Template::Like->new({
    LOAD_FILTERS => [
      Test::Filters->new
    ]
});

$t->process("index.tt", { var => "abCD" }, "index.html");

テンプレート側

<!-- var | lc -->
<!-- var | uc -->
<!-- var -->

出力結果

abcd
ABCD
abCD

CONSTANTS

パラーメーターの定数の設定が出来ます。

#!/usr/bin/perl
my $t = Template::Like->new( CONSTANTS => { title => "hoge" } );

テンプレート側

[% constants.title %]

CONSTANT_NAMESPACE

パラーメーターの規定値の呼び出し名を記述します。

#!/usr/bin/perl
my $t = Template::Like->new(
  CONSTANTS => { title => "hoge" },
  CONSTANT_NAMESPACE => "const"
);

テンプレート側

[% const.title %]

PRE_CHOMP / POST_CHOMP

空文字(\s)、改行文字(\n)を省きます。 PRE_CHOMPはタグから前方方向へ、POST_CHOMPは後方方向へ向かって処理します。
0 ... 省かない(標準)
1 ... 連続する空文字を省く、改行は1つまでしか含まない
2 ... 連続する空文字をスペースに変換する
3 ... 連続する空文字を省く

my $t = Template::Like->new(
    PRE_CHOMP  => 0,
    POST_CHOMP => 1
);

$t->process(
  "index.tt",
  {
    humans => [
      { name => 'hoge', age => 24 },
      { name => 'foo', age => 34 }
    ]
  },
  "index.html"
);

テンプレート側

[% FOREACH human = humans %]
- [% human.name %] (age [% human.age %])
[% END %]

出力結果

- hoge (age 24)
- foo (age 34)