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— максимальный размер сохраненной записи хэш-таблицы, включая длину ключа и значения.
Эти константы также могут использоваться с полными именами, например, SDBM_File::PAGFEXT.
ДИАГНОСТИКА
При ошибке вызов tie возвращает неопределенное значение и, вероятно, устанавливает $! для хранения причины, по которой файл не удалось связать.
sdbm store returned -1, errno 22, key "..." at ...
Это предупреждение выводится, когда вы пытаетесь сохранить ключ или значение, которое слишком длинное. Это означает, что изменение не было записано в базу данных. См. раздел ОШИБКИ И ПРЕДУПРЕЖДЕНИЯ ниже.
ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ
Не принимайте файлы SDBM из ненадежных источников!
Формат файла sdbm был разработан для скорости и удобства, а не для портативности или безопасности. Злонамеренно составленный файл может привести к зависанию Perl или даже к раскрытию уязвимости безопасности.
ОШИБКИ И ПРЕДУПРЕЖДЕНИЯ
Существует ряд ограничений на размер данных, которые вы можете сохранить в файле 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.30.3/SDBM_File