912____________Часть VIII. Примеры

Посмотрите скрипт DBBOOKADD.PL, с помощью которого записывается информация в базу данных dbm (см. компакт-диск).

Главными компонентами являются модуль Peri DB_FILE.PM и модуль для управления файлом FCNTL.PM (листинг 36.5). Первый модуль выполняет роль интерфейса с функциями dbm. Второй модуль обеспечивает вас функциями, контролирующими доступ к базе данных и запрещающими одновременную запись от двух источников.

h09121.jpg

#!/usr/bin/peri

use DB_File;

use Ferity-if ($ENV{ 'REQUE:ST_METHOD'}eq 'POST')-{

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@pairs= split(/&/, $buffer);

foreach $pair (@pairs)(

($name, $value)=split(/=/, $pair);

$value=~tr/+/ /;

$value=~s/%([a-fA-FO-9][a-fA-FO-9])/pack("C", hex($l))/eg;

$form{$name}=$value;

}}$file="addresses";

Для связи с базой данных вам следует использовать функцию tie О. Она имеет следующий синтаксис:

tie(%hashname, DB File, filename, flags, mode)

На мест hashnameможет стоять любое имя, однако оно должно начинаться символом %. Так как вы используете модуль DB_FILE.PM, то должны указать имя файла. Парамет filenameидентифицирует имя файла, в котором хранится информация. Далее нужно указать значени flags,которые зависят от используемой функции dbm. В этом примере следует использовать флажки для считывания и записи (O_RDWR)или, если файл не существует,