Forum Webscript.Ru

Программирование => Perl => Тема начата: FANTAzeRus от 24 Декабря 2003, 23:08:00

Название: Perl и Шаблоны
Отправлено: FANTAzeRus от 24 Декабря 2003, 23:08:00
Подскажите пожалуйста, как не исполльзуя дополнительных модулей, а в частности Text::Template, создать процедуру для замены в шаблоне выражений типа {$value} на значение существующей переменной???
Название: Perl и Шаблоны
Отправлено: FANTAzeRus от 25 Декабря 2003, 15:40:14
Разобрался! Если кому интересно:

use CGI qw(:standard);
print header();

$TEST = "Test Message";
print &template("./test.tpl");
exit;

sub template
{
 my $filename = $_[0];
 my $tpl;
 open(TPL,"<$filename");
 while() {$tpl .=$_}
 close(TPL);
 my @matches = $tpl =~ m/(\\{\\$\\w*?\\})/g;
 my $matches_found = @matches;

 for($i=0; $i<$matches_found; $i++){
   $pattern = @matches[$i];
   $pattern =~ s/\\{/\\\\{/g;
   $pattern =~ s/\\}/\\\\}/g;
   $pattern =~ s/\\$/\\\\\\$/g;
   $tpl_var = substr($pattern, 3, -2);
   $eval_str = \'$tpl =~ s/\'.$pattern.\'/\'.$tpl_var.\'/gemi;\';
   eval($eval_str);  
 }
 return $tpl;
}

........


файл test.tpl:

Mess: {$TEST}
Название: Perl и Шаблоны
Отправлено: ondr от 25 Декабря 2003, 16:07:33
FANTAzeRus
Зачем тебе все это? Если тебе нужен шаблонный "движок", тогда чем обусловлен отказ от  уже готовых модуей?
Название: Perl и Шаблоны
Отправлено: FANTAzeRus от 25 Декабря 2003, 16:35:06
ondr
Вполне возможно отсутствие нужного МНЕ модуля у хостера!
Название: Perl и Шаблоны
Отправлено: ondr от 25 Декабря 2003, 16:40:13
К примеру HTML::Template (и многие другие) можно положить к себе в каталог. Конечно не бог весть что, но хоть так.
Название: Perl и Шаблоны
Отправлено: FANTAzeRus от 26 Декабря 2003, 08:17:13
ondr
Не хочется делать ....
Цитировать
Название: Perl и Шаблоны
Отправлено: FANTAzeRus от 26 Декабря 2003, 08:19:37
Цитировать
не бог весть что