Spec-Zone.ru › Perl 5.36

NDBM_File

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
  • ДИАГНОСТИКА
    • ndbm store вернул -1, errno 22, ключ "..." в ...
  • БЕЗОПАСНОСТЬ И ПЕРЕНОСИМОСТЬ
  • НЕДОСТАТКИ И ПРЕДУПРЕЖДЕНИЯ

ИМЯ

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 должны быть:

  1. Переменная хэша, которую вы хотите связать.

  2. Строка "NDBM_File". (Это сообщает Perl использовать пакет NDBM_File, чтобы выполнять функции хэша.)

  3. Имя файла, который вы хотите связать с хэшем.

  4. Флаги. Используйте один из:

    O_RDONLY

    Только чтение данных из файла.

    O_WRONLY

    Только запись данных в файл.

    O_RDWR

    Чтение и запись.

    Если вы хотите создать файл, если он не существует, добавьте O_CREAT к любому из этих вариантов, как в примере. Если вы опустите O_CREAT и файл еще не существует, вызов tie завершится ошибкой.

  5. Права по умолчанию для использования при создании нового файла. Фактические права будут изменены маской пользователя, поэтому, вероятно, здесь нужно использовать 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

Spec-Zone.ru

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