|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Yaroslav A Kulikov 2:5036/32.13 15 Mar 2001 20:45:17 To : All Subject : [script] Hекорректная работа -------------------------------------------------------------------------------- Имеется скрипт, который работает, но очень плохо: выкладываю на сайт и он выводит все, что только есть вместо того, чтобы вывести необходимое. Как мне это можно исправить(исходный код внизу)? files.lst - файл, содержащий имена файлов, в которых нужно искать. *.cth - файлы текстового формата, в которых производится поиск. *.html - шаблоны выводимой страницы. Скрипт не работает здесь: http://cleverth.bos.ru/cgi-bin/search.cgi ДДД Тут начинается файл search.cgi ДДД #!e:/language/perl/bin/perl -w # Ярослав Алексеевич Куликов, 2000 # Почта: owlet@stu.lipetsk.ru # Hаписано специально для http://cleverth.bos.ru use locale; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g; $value =~ s/<([^>]|\n)*>//g; $FORM{$name} = $value; } $FORM{string} ||= "дурак"; $FORM{string} =~ s{\\.|\W}{}g; #удаляю все символы, кроме букв, цифр и "_" $FORM{string} =~ s{_}{*, *}; open( FN, "../misc/files.lst" ) or die; @filenames = <FN>; close( FN ); print "Content-type: text/html \n\n"; print qq{<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n\n}; open( HEAD, "../misc/header.html" ); while( <HEAD> ) { print; } close( HEAD ); print qq{<table width="100%" border=0 cellpadding=0 cellspacing=10>\n <tr>\n <td width="155" valign="top">}; open ( TEMP, "../misc/mainmenu.html" ); while( <TEMP> ) { print; } close ( TEMP ); print qq{<br><center>}; open ( TEMP, "../misc/all.counter" ); while( <TEMP> ) { print; } close ( TEMP ); print qq{</center></td>\n <td valign="top">}; open ( TEMP, "../misc/menu.html" ); while( <TEMP> ) { print; } close ( TEMP ); $flag = 0; $hflag = 0; $FORM{string} =~ s{\*, \*}{\|}; foreach $filename (@filenames) { $filename = "../misc/".$filename; open( DATAFILE, $filename ); $header = <DATAFILE>; while( <DATAFILE> ) { chomp; if ( m{.*$FORM{string}}i ) { $flag = 1; if ( $hflag == 0 ) { print qq{ <p class="header">$header</p>\n}; $hflag = 1; } ( $phrase, $author ) = split m{\|}; print qq{ <p> <img border=0 width=21 height=18 src="/images/dot1.gif" alt="*" align="middle"> $phrase}; if ( $author ) { print qq{($author)}; } print qq{</p>\n}; } } $hflag = 0; close( DATAFILE ); } print qq{<br>\n <p align="center" style="text-align:center;">}; if ( $flag == 0 ) { print qq{К сожалению, ничего найти не удалось. }; } print qq{Попробуйте <a href="/search.shtml" title="Hайти афоризмы" target="_self">поискать еще</a></p>}; open ( TEMP, "../misc/menu.html" ); while( <TEMP> ) { print; } close ( TEMP ); print qq{ </td>\n </tr>\n</table>}; open( FOOT, "../misc/footer.html" ); while( <FOOT> ) { print }; close( FOOT ); ДДД А здесь search.cgi кончается ДДД C уважением, Yaroslav A. Kulikov. --- УТВЕРЖДАЮ. MSG-редактор капитан 2.5 ранга Голд Дедович фор ДОС UNREG * Origin: Такие вопросы с кандачка не решаются! (2:5036/32.13) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/32863ab0f1a2.html, оценка из 5, голосов 10
|