Windows-клиент. Последний также будет содержать возврат каретки, поэтому любой такой

коды просто стираются. Если новой строки нет, примите формат Mac и

вместо этого замените все возвраты каретки символами новой строки.

Далее сохраните полученный текст поверх предыдущей версии страницы. Если

это новая страница, она создана.

open(F, ">pages/$page") или die "$page: $ !" ;

напечатать F;

закрыть (Ф);

Наконец, создайте страницу перехода по клику с благодарностью, чтобы подтвердить пользователю, что

страница действительно была обновлена.

мой% пар;

$par{title} = "Спасибо";

$par{страница} = $страница;

$par{тело} = «

"ЭОФ";

Страница <a href=wiki.cgi?$page>$page</a> сохранена.

Вы можете <b>вернуться</b> к форме редактирования и внести дополнительные изменения.

Не забудьте <b>перезагрузить</b> старые копии этой страницы и особенно

старые копии редактора.</i>

EOF


РАЗБИРАЕМ QUICKIWIKI

221

open(T, 'template.html') или die "template.html: $!";

неопределенный $/;

$_ = <Т>;

шкаф);

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

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

$/ = $nl;

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

единственная ссылка, представляющая реальный интерес для пользователя, — это та, которая в теле указывает на обновленный

страница. В качестве альтернативы используйте другой шаблон, чтобы свести к минимуму объем текста в

модуль.

Отслеживание изменений

Базовая QuickiWiki отслеживает изменения страниц, динамически генерируя список наиболее

последние обновления из даты/времени файла.

изменения.cgi

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

#(c) 1999, Cunningham & Cunningham, Inc.

# в сотрудничестве с Дэйвом В. Смитом

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

$ я++;

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

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

После общих утверждений преамбулы модуль создает отсортированный список всех

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

opendir(DIR, 'pages') или die "pages: $!";

мои @datedpages = sort {$a->[0] <=> $b->[0]}

карта

{ [ -M " страниц/$_", $_] }

grep / /N $link$/, readdir (DIR) ;

закрытый(КАТАЛОГ);

мой $max = $ENV {QUERY_STRING} =~ /\bmax= (\d+) / ? $1 : 25;

Разрешить настраиваемое максимальное количество элементов в сгенерированном списке путем

параметра запроса, но по умолчанию 25.


222

ИЗУЧЕННЫЕ КОМПОНЕНТЫ ВИКИ

мой $body = "<dl>\n"; # использовать список-определений

моя $lastdate;

foreach ( @datedpages ) {

мое $время = $_->[0];

я

мой $file = $_->[l];

моя дата $ = & mdy ($ время);

если ($date пе $lastdate) {

$тело .= "<dt>";

$body .= определено ($ lastdate) ? "<br>":

$тело .= $дата;

$последняя дата = $дата;

формат

}

$body .= " < ddxa href=wiki .cgi?$file>$file</a>\n" ;

последний, если --$max == 0;

}

$тело .= "</dl>\n";