А каталог l/ существует? Пробуй всю эту бодягу сохранить в файл ( имя придумай сам ). Изапусти его на своём сервере. Затем введи несколько разных имён и фамилий. После жми на ссылку "Показать данные". Результат выполнения программы напиши сюда.
Вот код:
| Код | #!/usr/bin/perl -w use strict; use CGI; use CGI::Carp qw( fatalsToBrowser ); my $cgi = new CGI; my $file = 'data_base';
# Подпрограмма выводит форму sub showForm { my $mess = shift || $cgi->font( { -color => "#aa0000" }, "Ваши данные успешно добавлены" ); print $cgi->start_html( -title => 'Test' ), $cgi->h2("Заполнение формы"), $cgi->br(), $cgi->b( $mess ), $cgi->br(), $cgi->start_form(), $cgi->b("Ваше имя: "), $cgi->textfield( -size => 15, -name => 'name' ), $cgi->br(), $cgi->b("Фамилия: "), $cgi->textfield( -size => 15, -name => 'family' ), $cgi->br(), $cgi->submit( -name => 'send', -value => 'Send' ), $cgi->end_form(), $cgi->hr(), $cgi->a( { -href => "$ENV{ SCRIPT_NAME }?send=Show" }, "Показать данные" ), $cgi->end_html(); }
# Подпрограмма записывает данные в DBM файл sub addToDBM { my $name = shift; my $family = shift; my %base = (); my $file = $file || 'data_base'; my $time = time; dbmopen( %base, $file, 0644 ) or die $!; while ( 1 ) { if ( exists $base{ $time } ) { ++$time; next; } else { $base{ $time } = "$name|$family"; last; } } dbmclose( %base ); }
# Подпрограмма вывод данные из DBM файла sub showData { my %base = (); my $file = $file || 'data_base'; print $cgi->start_html(), $cgi->h2("Данные из DBM файла: "), $cgi->br();
dbmopen( %base, $file, 0644 ) or die $!; while ( my( $key, $val ) = each( %base ) ) { my( $name, $family ) = split(/\|/, $val); print $cgi->b("Имя: "), $cgi->i( $name ), $cgi->br(), $cgi->b("Фамилия: "), $cgi->i( $family ), $cgi->br(), $cgi->b("Добавлено: "), $cgi->i( scalar( localtime( $key ) ) ), $cgi->hr(); } dbmclose( %base ); print $cgi->a( { -href => "$ENV{ SCRIPT_NAME }" }, "Вернуться к форме" ), $cgi->end_html(); }
# Выводим заголовок print $cgi->header( -charset => 'Windows-1251' );
# Проверяем параметры if ( $cgi->param('send') eq 'Send' ) { addToDBM( $cgi->param('name'), $cgi->param('family') ); showForm(); } elsif ( $cgi->param('send') eq 'Show' ) { showData(); } else { showForm("Заполните следующие поля и нажмите кнопку Send"); }
|
Удачи |