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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     26 Mar 2002  20:00:51
 To : Artem Chuprina
 Subject : Re: Анкета
 -------------------------------------------------------------------------------- 
 
 Artem Chuprina wrote:
 
 > Здравствуй, Oleg Shumsky.
 > Цену сбивают... За 20$ я не согласился бы написать работающее решение. Разве
 > что "как-то работающее"...
 
 Hу вот "как-то" работающее, пусть разбирается. Может чему научится :)
 
 ------------------ collect.cgi ---------------------
 #!/usr/bin/perl -w
 use strict;
 use CGI;
 use CGI::Carp 'fatalsToBrowser';
 use Fcntl qw(:flock);
 
 my $query = new CGI;
 
 my $name = $query->param('name') or die "Name required\n";
 my $age = $query->param('age') or die "Age required\n";
 my $answer = $query->param('answer') or die "Answer required\n";
 
 if (open(F, ">>data.dat")) {
      flock(F, LOCK_EX);
      print F "$name:$age:$answer\n";
      close(F);
 } else {
      die "Cannot open datafile: $!\n";
 }
 
 print $query->header,
      $query->start_html,
      "Thank you!",
      $query->end_html;
 ----------------------- EOF ---------------------
 ------------------- graph.cgi -------------------
 #!/usr/bin/perl -w
 use CGI;
 use Fcntl qw(:flock);
 use GD::Graph::bars;
 
 my %data;
 my %answers;
 my $query = new CGI;
 
 if (open(F, '< data.dat')) {
      flock(F, LOCK_SH);
      while (<F>) {
   chomp;
   my ($name, $age, $answer) = split /:/;
   $data{$age}->{$answer}++;
   $answers{$answer}++;
      }
      flock(F, LOCK_UN);
      close(F);
 }
 
 my @answers = sort keys %answers;
 my @data;
 foreach my $age (sort keys %data) {
      my $n = 1;
      push @{$data[0]}, $age;
      foreach my $answer (@answers) {
   push @{$data[$n++]}, $data{$age}->{$answer} || 0;
      }
 }
 
 my $graph = new GD::Graph::bars();
 
 $graph->set(
      x_label  => 'Age',
      y_label  => 'Answers',
      title    => 'Statistics',
      cumulate =>  1
 );
 
 $graph->set_legend(@answers);
 $graph->plot(\@data);
 
 binmode STDOUT;
 print $query->header('image/png'), $graph->gd->png();
 ----------------------- EOF ---------------------
 
 Андрей
 
 P.S. Пожалуста перечислите $20 какому-нибудь нуждающемуся
 ребенку.
 P.P.S. Даже и не пытайтесь ткнуть меня в какую-нибудь
 недоделку. Сам знаю, что их много.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Анкета   Nick Triputin   25 Mar 2002 22:07:18 
 Re: Анкета   Artem Chuprina   26 Mar 2002 12:56:40 
 Re: Анкета   Oleg Shumsky   26 Mar 2002 15:57:04 
 Re: Анкета   Artem Chuprina   26 Mar 2002 17:22:28 
 Re: Анкета   Andrey Sapozhnikov   26 Mar 2002 20:00:51 
 Анкета   Peter Bobin   28 Mar 2002 17:06:30 
 Re: Анкета   Victor Wagner   28 Mar 2002 16:36:37 
 Re: Анкета   Andrey Sapozhnikov   28 Mar 2002 17:09:42 
 Re: Анкета   Victor Wagner   28 Mar 2002 20:27:26 
 Re: Анкета   Andrey Sapozhnikov   28 Mar 2002 22:58:49 
 защита от копирования   Andrew Kulinich   04 Apr 2002 13:51:30 
Архивное /ru.cgi.perl/528404f4319e.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional