[devel] Re: Perl модули

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Апр 2 23:57:56 MSD 2005


On Sat, Apr 02, 2005 at 10:48:59PM +0400, Alexey Tourbin wrote:
> On Sat, Mar 26, 2005 at 06:47:41PM +0300, Вячеслав Диконов wrote:
> > # WARNING: failed to extract version
> > at /home/slava/.tmp/perl-SOAP-Lite-buildroot/usr/lib/perl5/vendor_perl/Apache/SOAP.pm line 18:
> > # $VERSION = sprintf("%d.%s", map {s/_//g; $_} q$Name:
> > release-0_60-public $ =~ /-(\d+)_([\d_]+)/);
> > # 'map' trapped by operation mask at (eval 3) line 1, <$fh> line 18.
> 
> Это из-за Safe->reval в perl.prov.  То есть map был отнесен
> к "ненадежным" опкодам.  То есть в `Porivdes: perl(Apache/SOAP.pm)'
> и др. версии не будет.  На это пока можно забить.

А ведь это я разломал.  Когда-то работало:
http://lists.altlinux.ru/pipermail/devel/2001-May/002823.html

То есть я решил отключить "entereval grepstart grepwhile mapstart
mapwhile" до тех пор, пока что-нибудь не сломается, т.к. у меня локально
на большом числе модулей ничего не сломалось.

Кстати, по этой ссылке видна ещё одна (уже исправленная) ошибка:
	
	my $version = $safe->reval("$line; \$VERSION;");

Что если $line заканчивается комментарием?  Правильно, $VERSION тоже
окажется в комментарии.  Правильно так:

	my $version = $safe->reval("$line\n; \$VERSION;");

Вернее, это наверное работало, т.к. $line заканчивался на \n.
А когда я сделал chomp, то работать перестало.

Ещё по нескольким граблям прошелся:

    if ((m/^=(head[12]|pod|over|item|for|begin)/) .. (m/^=(cut)/)) {
      next;
    }

В некоторых файлах вся документация находится в самом низу и *не
заканчивается* на =cut (что допустимо).  Тогда действие этого условия
перекидывается на следующий файл до ближайшего =cut.  Сейчас так:

	next if /^=\w/ .. (/^=cut/ or eof);

Прямо на это месте ещё одну граблю заметил: eof без скобок и eof() со
скобками ведет себя совершенно по-разному (см. perldoc -f eof).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20050402/79bc2605/attachment-0001.bin>


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