템플릿 (템플릿 툴킷)이로드 될 때 Perl 코드로 캐싱되기 전에 쉽게 수정할 수 있습니까? 나는 그것에 정규식을 실행하고 싶다.TT 템플릿 수정
1
A
답변
5
표준 하위 클래스 인 Template::Provider을 제공 할 수 있습니다. 훌륭한 매뉴얼에서 :
템플릿 :: 공급자는 템플릿 문서를로드, 구문 분석, 컴파일 및 캐시하는 데 사용됩니다. 이 개체는 하위로 분류되어 더 구체적인 로딩 기능을 제공하거나 그렇지 않으면 템플릿에 대한 액세스를 제공합니다.
그럼 꽤 쉬워야하지만 은 물론은 물론 기술에 따라 다릅니다.
4
위의 Template :: Provider 제안이 아마도 최선의 방법 일 것입니다. 그러나 더 단순한 (약간 hacky라면) 접근법도있다. 템플릿을 스칼라로 읽고 템플릿 프로세서로 전달하기 전에 원하는 모든 변환을 실행할 수 있습니다.
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을 참조하십시오.