2010-12-14 9 views
1

テンプレート(Template Toolkit)がロードされた後、Perlコードとしてキャッシュされる前に、簡単にテンプレートを変更できますか?私はそれで正規表現を実行したい。TTテンプレートの変更

答えて

5

Template::Providerは標準のサブクラスであることができます。ファインマニュアルから:

テンプレート::プロバイダは、テンプレートドキュメントの読み込み、解析、コンパイル、キャッシュに使用されます。この オブジェクトは、ローディングのためのより具体的な機能を提供するためにサブクラス化されてもよく、そうでなければテンプレートへのアクセスを提供するようにされてもよい。

だから、かなり簡単になるはずですが、簡単にはあなたのスキルに大きく依存します。

4

上記のTemplate :: Providerの提案は、おそらくこれを実行する最良の方法です。しかし、より単純な(ややハッキリであれば)アプローチもあります。テンプレートをスカラーに読み込んで、テンプレートプロセッサーに渡す前に任意の変換を実行することができます。

my $tt = Template->new; 

open my $template_fh, '<', 'template.tt' or die $!; 
my $template = do { local $/; <$template_fh> }; 

$template =~ s/some regex/some replacement/; 

my $vars = { template => 'variables' }; 

$tt->process(\$template, $vars) or die $tt->error; 

secretは、process()メソッドが最初のパラメータとしてさまざまな型の値をとることです。あなたがスカラーならば、それはテンプレートを含むファイルの名前とみなされます。しかし、もしそれがスカラーのリファレンスであれば、そのスカラーは実際のテンプレートを含んでいると仮定します。詳細は、the documentationを参照してください。

関連する問題