변수 (예 : <% TPL name=userName %>
)와 기능 (예 : <% TPL func=time param=now %>
또는 <% TPL func=rand %>
)의 두 가지 유형의 매크로를 사용하여 간단한 템플릿 시스템을 작성해야합니다.간단한 Perl 템플릿 시스템에서 템플릿 컴파일
모두 괜찮습니다.하지만 템플릿을 추가해야합니다. 가변 매크로를 Perl 변수 (<% TPL name=userName %>
~ $userName
또는 $vars->{userName}
)로 대체하고 "Some text $rand->() blah blah"
또는 "Some text $func->{time}->('now') and blah blah blah"
으로 기능을 변경하려고합니다.
나는 변수를 만들어 :
my $tpl = eval 'sub { my $vars = shift; "Hello, $vars-{userName}!" }';
return $tpl->({ userName => 'John' });
하지만 기능을 수행하는 방법을 모르겠어요. 이 코드는 작동하지 않습니다.
my $tpl = eval 'sub { my $func = shift; "Today is $func->{time}->('day')" }';
return $tpl->({ time => \&_time });
어떻게 작동합니까?
P.S. 당신은 문자열 내부에서 함수를 호출 할 수 없기 때문에 나는이 작동하지 않는 다른 템플릿 시스템 (TT, HTML :: 템플릿 또는 다른)
을 고체 템플릿의 번호와 Perl에서 사용할 수있는 옵션, 또 다른 옵션을 작성하면 더 이상의 정당성을 사용할 수 있습니다. 기존의 대안을 고려해야하는 또 다른 이유는 현재 실행중인 과제입니다. –
CPAN 모듈을 사용하지 않는다면 구현 방법을 살펴보십시오. –
템플릿 시스템을 만드는 것은 어렵습니다. 왜 너 자신을 만들려고하는거야? –