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