Template.pm


NAME

Template - Perlのコードを埋め込んだテンプレートを扱うモジュール


DESCRIPTION

Perl のコードとテンプレートを分離するのに便利なモジュール。 テンプレートの適切な箇所に Perl のコードを埋め込むことで、 Perl からの変数を参照できる。

  use Template;
  # 典型的な使い方
  $tmpl = Template->new($templatefile);
  $out = $tmpl->out(\%var, \%nvar);
  # デコードのみ
  $out = Template->new($templatefile)->out(undef, undef, decodeonly => 1);

METHODS

new ( FILE [,OPTION] )
  $tmpl = Template->new($file, %opt);
    OPTION :
      decoded => BOOLEAN       # true ならばデコードを行わない
      tmpdir => STRING         # モジュール内部で使うテンポラリディレクトリ
      escapecode => CODE       # nvar から var を生成するときに使うコード

Templateオブジェクトを返す。

$opt{escapecode} が省略された場合は、'&', '<', '>', '``' を '&amp;', '&lt;', '&gt;', '&quot;' に変換するフィルタが適用される。

out ( VAR, NVAR [,OPTION] )
  print $tmpl->out($var, $nvar, %opt);
  ARGS :
    var => HASHREF             # $nvar, $var で参照できる値
    nvar => HASHREF            # $nvar のみで参照できる値
  OPTION :
    decodeonly => BOOLEAN      # デコードのみ

テンプレートを出力する。 var, nvar で指定された値は、テンプレート中の変数 $nvar で参照できる。 さらに、var で指定された値がエスケープされたものが、 テンプレート中の変数 $var で参照できる。

decode ( [OPTION] )
  $tmpl->decode();
    OPTION :
      file => STRING           # ファイル名
      forbid => HASHREF        # 埋め込むと無限ループになるテンプレート
                               # (内部処理用)
      import => BOOLEAN        # true ならば インポートされたファイル

テンプレートファイルから Perl のコードを生成する。 テンプレートファイルを埋め込むときには、再帰的に呼び出される。

_replica_var ( VAR [,FILTER] )
  $out = $self->_replica_var($in, $filter);
    ARGS :
      $in => REF               # 変数
      filter => CODEREF        # フィルタ
    RET : REF                  # $out の複製

変数の複製を作る。 変数が配列やハッシュへのリファレンスの場合は、 参照先を辿って複製を作る。 ただし、ARRAY, HASH, GLOB, SCALAR, REF へのリファレンス以外の リファレンスの場合は、 (完全な複製ではなく)リファレンスそのものを単にコピーする。


SEE ALSO

IO::File


AUTHOR

Copyright (C) 2002 The Nagoya University Consumers' Co-operative Association

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the following URL for more details: http://www.gnu.org/licenses/gpl.txt

Written by Kenji Nakahira <nakahira@coop.nagoya-u.ac.jp>