Spec-Zone.ru › Perl 5.28

SDBM_File

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • СИНТАКСИС
  • ОПИСАНИЕ
    • Связывание
  • ЭКСПОРТИРУЕТСЯ
  • ДИАГНОСТИКА
    • sdbm store вернул -1, errno 22, ключ "..." в ...
  • ОШИБКИ И ПРЕДУПРЕЖДЕНИЯ

НАЗВАНИЕ

SDBM_File — Связывание с файлами формата sdbm

СИНТАКСИС

use Fcntl;   # For O_RDWR, O_CREAT, etc.
use SDBM_File;

tie(%h, 'SDBM_File', 'filename', O_RDWR|O_CREAT, 0666)
  or die "Couldn't tie SDBM file 'filename': $!; aborting";

# Now read and change the hash
$h{newkey} = newvalue;
print $h{oldkey}; 
...

untie %h;

ОПИСАНИЕ

SDBM_File устанавливает соединение между переменной Perl hash и файлом в формате SDBM_File. Вы можете манипулировать данными в файле так, как если бы они находились в переменной Perl hash, но при завершении программы данные сохранятся в файле для использования при следующем запуске.

Связывание

Используйте SDBM_File с встроенной функцией Perl tie для установления соединения между переменной и файлом.

tie %hash, 'SDBM_File', $basename, $modeflags, $perms;

tie %hash, 'SDBM_File', $dirfile,  $modeflags, $perms, $pagfilename;

$basename — базовая имя файла базы данных. База данных состоит из двух файлов с расширениями ".dir" и ".pag", добавленными к $basename,

$basename.dir     (or .sdbm_dir on VMS, per DIRFEXT constant)
$basename.pag

Два имени файла также могут быть указаны полностью как $dirfile и $pagfilename. Это подходит для двух файлов без расширений ".dir" и ".pag", например, для двух файлов из File::Temp.

$modeflags может быть следующими константами из модуля Fcntl (в стиле системного вызова open(2)),

O_RDONLY          read-only access
O_WRONLY          write-only access
O_RDWR            read and write access

Если вы хотите создать файл, если он ещё не существует, то выполните побитовое ИЛИ (|) O_CREAT тоже. Если вы опустите O_CREAT, а база данных ещё не существует, то вызов tie завершится ошибкой.

O_CREAT           create database if doesn't already exist

$perms — биты разрешений файла для использования при создании новых файлов базы данных. Этот параметр обязателен даже при отсутствии создания новой базы данных. Разрешения будут уменьшены с помощью маски пользователя, поэтому типичное значение здесь — 0666, или, если данные очень конфиденциальны, то 0600. (См. "umask" в perlfunc.)

ЭКСПОРТИРУЕТСЯ

SDBM_File необязательно экспортирует следующие константы:

  • PAGFEXT — расширение, используемое для файла страницы, обычно .pag.

  • DIRFEXT — расширение, используемое для файла каталога, .dir везде, кроме VMS, где оно .sdbm_dir.

  • PAIRMAX — максимальный размер сохранённой записи hash, включая длину ключа и значения.

Эти константы также могут быть использованы с полными именами, например, SDBM_File::PAGFEXT.

ДИАГНОСТИКА

При ошибке вызов tie возвращает неопределённое значение и, вероятно, устанавливает $! для указания причины, по которой файл не удалось связать.

sdbm store returned -1, errno 22, key "..." at ...

Это предупреждение выводится при попытке сохранить ключ или значение, длина которых слишком велика. Это означает, что изменение не было записано в базу данных. См. ОШИБКИ И ПРЕДУПРЕЖДЕНИЯ ниже.

ОШИБКИ И ПРЕДУПРЕЖДЕНИЯ

Существует несколько ограничений на размер данных, которые можно сохранить в файле SDBM. Самое важное — что длина ключа плюс длина его связанного значения не должна превышать 1008 байтов.

См. "tie" в perlfunc, perldbmfilter, Fcntl

© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.28.3/SDBM_File

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API