|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/2823398849f9.html, оценка из 5, голосов 10
|