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–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/NDBM_File