Spec-Zone.ru › Perl 5.34

AnyDBM_File

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
    • Сравнение DBM
  • СМОТРИТЕ ТАКЖЕ

ИМЯ

AnyDBM_File - предоставляет основу для множества DBM

NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File - различные реализации DBM

СИНТАКСИС

use AnyDBM_File;

ОПИСАНИЕ

Этот модуль является "чистым виртуальным базовым классом" - у него нет собственных функций. Он просто предназначен для наследования от одного из различных пакетов DBM. Он отдаёт предпочтение ndbm по причинам совместимости с Perl 4, затем Berkeley DB (см. DB_File), GDBM, SDBM (который всегда доступен - он входит в Perl) и, наконец, ODBM. Таким образом, старые программы, которые раньше использовали NDBM через dbmopen(), всё ещё могут это делать, но новые могут переупорядочить @ISA:

BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
use AnyDBM_File;

Использование множества реализаций DBM упрощает копирование форматов баз данных:

use Fcntl; use NDBM_File; use DB_File;
tie %newhash,  'DB_File', $new_filename, O_CREAT|O_RDWR;
tie %oldhash,  'NDBM_File', $old_filename, 1, 0;
%newhash = %oldhash;

Сравнение DBM

Вот частичная таблица возможностей, которые предлагают различные пакеты:

                        odbm    ndbm    sdbm    gdbm    bsd-db
                        ----    ----    ----    ----    ------
Linkage comes w/ perl   yes     yes     yes     yes     yes
Src comes w/ perl       no      no      yes     no      no
Comes w/ many unix os   yes     yes[0]  no      no      no
Builds ok on !unix      ?       ?       yes     yes     ?
Code Size               ?       ?       small   big     big
Database Size           ?       ?       small   big?    ok[1]
Speed                   ?       ?       slow    ok      fast
FTPable                 no      no      yes     yes     yes
Easy to build          N/A     N/A      yes     yes     ok[2]
Size limits             1k      4k      1k[3]   none    none
Byte-order independent  no      no      no      no      yes
Licensing restrictions  ?       ?       no      yes     no
[0]

на машинах с разнородной системой, возможно, в библиотеке bsd compat, которую часто избегают.

[1]

Может быть урезан, если вы компилируете для одного метода доступа.

[2]

См. DB_File. Требует символические ссылки.

[3]

По умолчанию, но может быть переопределён.

СМОТРИТЕ ТАКЖЕ

dbm(3), ndbm(3), DB_File(3), perldbmfilter

© 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.34.0/AnyDBM_File

Spec-Zone.ru

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