SDBM_File
СОДЕРЖАНИЕ
НАЗВАНИЕ
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