Perl コードとしてキャッシュされる前に、ロード時にテンプレート (テンプレート ツールキット) を簡単に変更できますか? 正規表現を実行したい。
2 に答える
5
標準のものをサブクラス化する独自のTemplate::Providerを提供できます。細かいマニュアルから:
Template::Provider は、テンプレート ドキュメントの読み込み、解析、コンパイル、およびキャッシュに使用されます。このオブジェクトをサブクラス化して、読み込みのためのより具体的な機能を提供したり、テンプレートへのアクセスを提供したりすることができます。
だから、それはかなり簡単なはずですが、もちろん、あなたのスキルに大きく依存します.
于 2010-12-15T01:09:07.680 に答える
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;
その秘密は、process() メソッドが最初のパラメーターとしてさまざまなタイプの値を取ることです。if をスカラーに指定すると、それはテンプレートを含むファイルの名前であると見なされます。しかし、それがスカラーへの参照である場合、そのスカラーに実際のテンプレートが含まれていると想定します。詳細については、ドキュメントを参照してください。
于 2010-12-15T12:32:58.170 に答える