Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Sergey Salnikov                      2:478/55.25    02 Aug 2000  16:02:10
 To : All
 Subject : опустите скрипт
 -------------------------------------------------------------------------------- 
 
 
 Вот начал изучать перл.
 Пишу прогамульки, но чуствую что код получается некрасивм, грязным,
 неоптимальным и т.д.
 Hапример скрипт - голосование.
 Те кто любит критиковать, посмотрите плз!
 
 Hа страничке есть форма, с вариантами ответов.
 Методом GET пересылаю в этот скрипт:
 #!d:/perl/bin/perl.exe
 require 'lock.pl'; <-- здесь подпрограмма из книги рецептов по перлу...
 
 print <<HTML;
 Content-type: text/html
 <HTML>
 <HEAD>
 <TITLE>
 CastleHero
 </TITLE>
 </HEAD>
 <LINK href="/style.css" rel="stylesheet" type="text/css"
 <BODY>
 HTML
 
 #получаю данные типа - vote=Ответ1 методом GET, формирую массив field
 $query = $ENV{QUERY_STRING};
 @field=split('=',$query);
 
 #декодирование текста "Ответ1"
 $a=$field[1];
 $a =~ s/\+/ /g;
 $a =~ s/%([0-9A-H]{2})/pack('C',hex($1))/eg;
 
 #sum - общее число голосов
 $sum=0;
 $i=0;
 
 #далее читаю из файла предыдущие результаты в формате "ответ"=чило_голосв:
 #   Ответ1=10
 #   Ответ2=7
 #нахожу свежепришедший ответ, и прибавляю единицу к чиcлу голосов
 
 open (file, "<vote/data.txt");
 while ($line = <file>)
         {
         @LINE=split('=',$line);
 #поиск линии с ответом
     if ($LINE[0] eq $a) {
     $LINE[1]++;
     $line="$LINE[0]=$LINE[1]";
 }
 
 #удаление символа конца строки
     if ($line=~ /\n$/) {
     chop($line);
     }
 
 #формирую маccив vote из всех линий для записи обратно в файл
     $vote[$i]=$line;
     $i++;
 #заодно считаю сумму всех голосов
     $sum+=$LINE[1];
         }
 
 close(file);
 
 #теперь записываю массив vote в файл, одновременно формируя страничку
 #с результатами...
 
 $lock_dir='lock/';
 $name_len=32;
 $max_wait=2;
 if (&lock("vote/data.txt",$lock_dir,$max_wait)) {
 &error($error_message);
 }
 
 print "<center><font id=newhead>Результаты голосования</font><hr>";
 print "<font id=anons>Число проголосовавших = $sum</font><br><br>";
 
 open(file,">vote/data.txt");
 for ($n = 0;$n < $i;$n++)
         {
 
     @wid=split('=',$vote[$n]);
         print "<font id=text>$wid[0] - ";
     printf("%.2f\n",$wid[1]*100/$sum);
     print "%</font><br>\n";
     print file "$vote[$n]\n";
         }
 
 print "</center>";
 close(file);
 
 if (&unlock("vote/data.txt",$lock_dir))
 {
 &error($error_message);
 }
 
 print "</BODY></HTML>\n"
 
 Все, конец скрипта.
                 Удачи, Sergey Salnikov.
 [cybserge@chat.ru]   [ICQ:28252878]
 
 ---
  * Origin: Hе звоните мне ночью!!! (2:478/55.25)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 опустите скрипт   Sergey Salnikov   02 Aug 2000 16:02:10 
Архивное /ru.cgi.perl/2823398849f9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional