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";