[devel] Re: AnyDBM_File DB_File

Alexey Morozov =?iso-8859-1?q?morozov_=CE=C1_novosoft=2Eru?=
Пн Ноя 4 11:53:29 MSK 2002


On Mon, Nov 04, 2002 at 09:26:43AM +0300, Alexey Tourbin wrote:
> On Mon, Nov 04, 2002 at 02:03:05PM +0600, Alexey Morozov wrote:
> > > 2) вынести как AnyDBM_File, так и модуль для формата по умолчанию в
> > > отдельный пакет.
> > "Модуль для формата" - какого формата?
> Который первый в списке @ISA у AnyDBM_File.
Этот список можно менять.
------ цитата из man AnyDBM-File --
BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
use AnyDBM_File;
---------
(либо, что сопоставимо по эффекту, просто
use AnyDBM_File qw(DB_File GDBM_File NDBM_File);)



 > Э-э-э, не. О "системных альтернативах" речь, собственно, и не идет. Если же Вы имеете
> > в виду приоритеты *DB*File, то в потрохах у AnyDBM все равно зашита некоторая таблица,
> > и те пакеты, которым и вправду все равно (они не определяют собственного приоритета в
> > отношении *DB* модулей), получают формат базы именно в соответствии с этой таблицей.
> > Те же, кто хочет чего-то явно - ну он так об этом и говорит.
> 
> Об этом и идет речь.
> 
> > Коль скоро это так, то установка NDBM может стать фатальной для тех, кто до этого
> > пользовался модулями "по умолчанию" (скажем DB_File), и никак не отразится на тех,
> > кто явным образом сказал, что он хочет DB_File и ничего кроме DB_File. Причем, произойдет
> > это вне зависимости от Вашего желания или нежелания, а также приложенных к устранению
> > данной ситуации усилий. There's always more than one way ... :-)
> 
> Дело в том, что интересы разработчиков софта (обеспечить максимальную
> переносимость) можгут вступать в противоречие с интересами создателей
> дистрибутива (обеспечить максимльную consistency). AnyDBM_File -- как
> раз такой случай.
Кто б спорил. Но, я так понимаю, коль скоро дистрибутив создается в расчете на некоторую
целевую аудиторию, имеет смысл прислушиваться к чаяниям этой целевой аудитории, как
минимум не меньше, чем к собственным идеологическим установкам :-).
В общем, я за AnyDBM в отдельном модуле и отдельных *DB* провайдеров.

>  use 5.006_001;
>  our $VERSION = '1.00';
> -our @ISA = qw(NDBM_File DB_File GDBM_File SDBM_File ODBM_File) unless @ISA;
> +our @ISA = qw(DB_File) unless @ISA;
>  
>  my $mod;
>  for $mod (@ISA) {
Гхм... Ну, эти правки должны, как минимум, включать в себе правку соответствующей
документации :-). Но, вообще-то, я не очень понимаю, что исправляет данный патч,
кроме усечения "функциональности по умолчанию" и возможности натравливать на все на это
perl.req без получения нерезолвящихся (ODBM_File) зависимостей. По-моему, "овчинка
выделки..."



Подробная информация о списке рассылки Devel