2010-12-14 55 views
1

在將模板作爲Perl代碼緩存之前,是否可以輕鬆修改模板(模板工具包)在加載時是否可以輕鬆修改?我想運行一個正則表達式。TT模板的修改

回答

5

你可以提供你自己的Template::Provider,它是一個標準的子類。來自精細的手冊:

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; 

祕訣在於process()方法將各種類型的值作爲其第一個參數。如果你給出了一個標量,那麼它被認爲是包含該模板的文件的名稱。但是,如果它是對標量的引用,那麼它會假定該標量包含實際的模板。有關更多詳細信息,請參見the documentation