Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Центральная часть скрипта, обрабатывающего предложенный шаблон, может выглядеть так:
my $block_no = 1;
my $image_no = 1;
my $anchor;
for my $para ($doc->selectParagraphsByStyle('EmbeddedPerl')) {
my $code = $doc->getText($para);
$anchor = $para;
my $result = eval $code;
die "Error in template block $block_no: $@" if ($@);
if (ref $result && $result->isElementNode) {
$doc->replaceElement($para, $result);
} else {
if ($result) {
my $new_para = $doc->insertParagraph($para);
$doc->setText($new_para, $result);
}
$doc->removeElement($para);
}
$block_no++;
}
$doc->save($o_file);
Метод selectParagraphsByStyle() возвращает список абзацев, имеющих заданный стиль (поэтому важно использовать «мягкий» перевод строки: нажав Enter, вы создадите новый абзац, и код во вставке оборвется). Если вставка, выполняемая функцией eval(), вернула объект Element, он замещает собой абзац, в котором размещалась вставка; в противном случае абзац просто удаляется. Любое другое непустое возвращаемое значение трактуется как абзац текста, логическая ложь означает «удалить вставку и не предпринимать ничего сверх этого».