Глава 17: Работа с пользовательскими базами данных.
17.2 Открытие и закрытие DBM-хешей
Чтобы связать DBM-базу данных с DBM-массивом, применяется функция dbmopen, которая используется следующим образом:
dbmopen(%ИМЯ_МАССИВА, "имя_DВМ-файла", $режим)
Параметр %имя_массива — это имя Perl-хеша. (Если в данном хеше уже есть значения, они выбрасываются.) Хеш соединяется с DBM-базой данных, заданной параметром имя_dbm-файла. Она обычно хранится на диске в виде пары файлов с именами имя_DBM-файла.dіr и имя_DВМ-файла.раg.
Параметр $режим — это число, которое соответствует битам прав доступа к названным двум файлам, если файлы создаются заново. Обычно оно указывается в восьмеричном формате; часто используемое значение 0644 предоставляет право доступа только для чтения всем, кроме владельца, который имеет право на чтение и запись. Если эти файлы существуют, данный параметр не действует. Например:
dbmopen(%FRED, "mydatabase", 0644);
# открыть хэш %FRED на mydatabase
Этот вызов связывает хеш %fred с файлами mydatabase.dir и mydatabase.pag, расположенными в текущем каталоге. Если эти файлы не существуют, они создаются с правами доступа 0644, которые модифицируются с учетом текущего значения, установленного командой umask.
Функция dbmopen возвращает значение "истина", если базу данных можно открыть или создать; в противном случае возвращается "ложь" — точно так же, как при вызове функции open. Если вы не хотите создавать файлы, используйте вместо параметра $режим значение undef. Например:
dbmopen(%A,"/etc/xx",undef) || die "cannot open DBM /etc/xx";
Если, как в данном случае, /etc/xx.dir и /etc/xx.pag oткрыть нельзя, то вызов dbmopen возвращает значение "ложь" без попытки создать эти файлы.
DBM-массив остается открытым в течение выполнения всей программы. Когда программа завершается, разрывается и связь с DBM-базой данных. Эту связь можно разорвать и способом, близким к закрытию дескриптора файла — с помощью функции dbmclose:
dbmclose(%A);
Как и функция close, dbmclose возвращает значение "ложь", если что-нибудь происходит не так, как надо.
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|