+
+#------------------------------------------------------------------------
+# Подстановка в дереве
+#------------------------------------------------------------------------
+
+#
+# Найти все элементы, удоволетворяющие заданному критерию и подставить в
+# них указанные атрибуты
+#
+# Параметры 1. Дерево (класса HTML::Element)
+# 2. Запрос - ссылка на список вида атрибут=>значение.
+# Этот список будет непосредственно передан в
+# HTML::Element::look_down
+# 3. Далее пары имя-атрибута, значение. Если вместо имени атрибута
+# использовать слово _content, заменено будет содержимое элемента.
+# Значение для _content - ссылка на HTML::Element. Если там строка,
+# она будет вставлена как одиночный текстовый узел.
+# 4. Возвращает число выполненных подстановок (0, если искомых элементов
+# не найдено.
+#
+sub substinfo {
+ my ($tree,$query,@attrs) = @_;
+ my $count;
+ foreach my $element ($tree->look_down(@$query)) {
+ $count ++;
+ while (@attrs) {
+ my $attr = shift @attrs;
+ my $value = shift @attrs;
+ if ($attr eq "_content") {
+ $element->delete_content;
+ $element->push_content($value);
+ } else {
+ $element->attr($attr,$value);
+ }
+ }
+ }
+ return $count;
+}
+