Анализ содержимого страницы

Модуль tally был кратко упомянут в Главе 6 с примерами скриншотов в качестве

возможна индивидуальная опция для обработки числовых данных, введенных в соответствии с

определенный формат на подмножестве связанных страниц.

Эта подпрограмма работает очень хорошо во многих контекстах, несмотря на ее упрощенный характер проверки концепции.

tally.cgi

# ! /USR/бен/перл

# Copyright (c) 1999, Cunningham & Cunningham,

# Все права защищены

# используйте строгий;

print "Тип контента: text/html\n\n";

Инк.


230

ПРОВЕРЕННЫЕ КОМПОНЕНТЫ WIKI

my $link = "[AZ][az]+([AZ][az]+)+";

my ($page) = $ ENV{HTTP_REFERER} =~ /($link)$/ или die("не могу найти

реферер");

В этом модуле представлена серверная переменная HTTP_REFERER, используемая для определения

с какой страницы пришел пользователь — на практике это страница, на которой находится ссылка на подсчет

модуль ставится.

Здесь определяется концепция подсчета, так что эта ссылка на страницу используется как

верхняя страница для поддерева, состоящего из страниц, на которые оно ссылается, и страниц, на которые они

повернуть ссылку на. (Обратите внимание, что ссылки на шаблоны не учитываются, поскольку они не

определяется в содержимом страницы.) Таким образом, tally проходит по ссылкам, чтобы найти все дочерние страницы под

это, включая те, на которые есть ссылки с подчиненных страниц.

мой (%tally,%count,%mark);

мой (% номинал);

мои $страницы = 0;

& подсчитать($страница);

подсчет {

моя ($ страница) =

мои @цитаты;

вернуть, если $mark{$page}++;

$par{'body'} .= "<ul><li><a href =wiki .cgi?$page>$page</a>'";

open (F, "pages/$page") или die("невозможно открыть страницы/$page: $!");

пока (<F>) {

последний, если Γ

/;

push(@cites, $1) if /~\*\s*($link)/ и -e "pages/$l";

следующий, если только /\s+([az ]+)\:\s*(\d+(\.\d+)?)/i;

$par{'body'} .= "$1: <b>$2</b>";

$tally{$1} += $2;

$счетчик{$1} += 1;

}

закрыть (F);

$страниц++;

карта (&tally($_), @cites);

$par{'body'} .= "</ul>";

}

По завершении эта подпрограмма сгенерировала хэш ссылок на страницы (первые

на маркированных строках) и поля, определяемые простым правилом «Строка начинается с пробела,

описание, за которым следует двоеточие и числовое значение". Только поля до первого правила

подсчитывается.


ДОПОЛНИТЕЛЬНЫЕ ДОПОЛНИТЕЛЬНЫЕ КОМПОНЕНТЫ

231

Полагаясь на хэш страниц, чтобы посетить каждую только один раз и избежать бесконечной рекурсии,

мы обеспечиваем четко определенный выход. Собранные результаты затем «разбираются» и обрабатываются:

моя $строка = 0;

моя таблица $ = '·;.'

foreach (ключи сортировки %tally) {

мой $mean = int($tally{$_} * 100/$count{$_})/100;

мой $цвет =. $строка++ % 2 ? '#CCFFFF' : '#88FFFF';

$таблица .= « "EOF" ;

< tr BGCOLOR=" $co 1 or" > <td>$_</1d> <td>$tally {$_} </1d> <td>$mean< /

td> <td>$count{$_}</td> </tr>

EOF

}

$par{'тело'} .= « "EOF" ;

< pxtable BORDER=0 CELLSPACING=0 CELLPADDING=2 >

<tr> <td></td> <td>сумма</td> <td>среднее</td> <td>число</td> </tr>

$ таблица

</таблица>

EOF

$par{'title'} = "Счет $page";

$par{'summary'} = "Страницы $pages подсчитаны, начиная с <a

href=?$page>$page</a>.";

открыть (T, 'template.html');

пока (<T>) {

s/\$(\w+)/определено($par{$1}) ? $par{$l} : V'/гео;

Распечатать;

}

шкаф);

Сделанный. Вставьте шаблон ссылки

вы хотите обработать.

http: подсчет. компьютерная графика

на родительской странице для набора страниц

УПРАВЛЕНИЕ ДОСТУПОМ ПОЛЬЗОВАТЕЛЕЙ