NDBM_File
СОДЕРЖАНИЕ
ИМЯ
NDBM_File - Связанный доступ к файлам ndbm
СИНТАКСИС
use Fcntl; # For O_RDWR, O_CREAT, etc.
use NDBM_File;
tie(%h, 'NDBM_File', 'filename', O_RDWR|O_CREAT, 0666)
or die "Couldn't tie NDBM file 'filename': $!; aborting";
# Now read and change the hash
$h{newkey} = newvalue;
print $h{oldkey};
...
untie %h; ОПИСАНИЕ
NDBM_File устанавливает соединение между переменной Perl-хэша и файлом в формате NDBM_File;. Вы можете манипулировать данными в файле так, как будто они находятся в Perl-хэше, но после выхода вашей программы данные останутся в файле, чтобы их можно было использовать в следующий раз, когда ваша программа запустится.
Используйте NDBM_File с встроенной функцией Perl tie для установления соединения между переменной и файлом. Аргументы для tie должны быть:
-
Переменная хэша, которую вы хотите связать.
-
Строка
"NDBM_File". (Это сообщает Perl использовать пакетNDBM_File, чтобы выполнять функции хэша.) -
Имя файла, который вы хотите связать с хэшем.
-
Флаги. Используйте один из:
O_RDONLY-
Только чтение данных из файла.
O_WRONLY-
Только запись данных в файл.
O_RDWR-
Чтение и запись.
Если вы хотите создать файл, если он не существует, добавьте
O_CREATк любому из этих вариантов, как в примере. Если вы опуститеO_CREATи файл еще не существует, вызовtieзавершится ошибкой. -
Права по умолчанию для использования при создании нового файла. Фактические права будут изменены маской пользователя, поэтому, вероятно, здесь нужно использовать 0666. (См. "umask" в perlfunc.)
ДИАГНОСТИКА
При ошибке вызов tie возвращает неопределенное значение и, вероятно, устанавливает $! для хранения причины, по которой файл не удалось связать.
ndbm store returned -1, errno 22, key "..." at ...
Это предупреждение выводится, когда вы пытаетесь сохранить ключ или значение, которые слишком длинные. Это означает, что изменение не было записано в базу данных. См. НЕДОСТАТКИ И ПРЕДУПРЕЖДЕНИЯ ниже.
БЕЗОПАСНОСТЬ И ПЕРЕНОСИМОСТЬ
Не принимайте файлы NDBM из ненадежных источников.
В современных системах Linux это обычно файлы GDBM, которые не переносимы между платформами.
Документация GDBM не подразумевает, что файлы из ненадежных источников могут безопасно использоваться с libgdbm.
Системы, не использующие совместимость GDBM для поддержки ndbm, будут использовать платформозависимую библиотеку, возможно, унаследованную от систем BSD, где использование недоверенного файла может быть или не быть безопасным.
Злонамеренно созданный файл может привести к сбою Perl или даже к раскрытию уязвимости безопасности.
НЕДОСТАТКИ И ПРЕДУПРЕЖДЕНИЯ
Существует ряд ограничений на размер данных, которые можно хранить в файле NDBM. Наиболее важным является то, что длина ключа плюс длина связанного с ним значения не должна превышать 1008 байт.
См. "tie" в perlfunc, perldbmfilter, Fcntl
© 1993–2021 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.36.0/NDBM_File