[devel] Re: I: rpm-build-perl-0.5
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Дек 8 09:53:27 MSK 2004
On Wed, Dec 08, 2004 at 09:12:07AM +0300, Alexey Tourbin wrote:
> On Wed, Dec 08, 2004 at 08:12:12AM +0300, Alexey I. Froloff wrote:
> > Кстати, а такая проблема в новом r-b-p решена?
> >
> > use constant MP2 => $mod_perl::VERSION >= 1.99;
> >
> > BEGIN {
> > my @constants = qw( OK AUTH_REQUIRED FORBIDDEN DECLINED SERVER_ERROR );
> > if (MP2) {
> > require Apache::Const;
> > import Apache::Const @constants;
> > }
> > else {
> > require Apache::Constants;
> > import Apache::Constants @constants;
> > }
> > }
> >
> > После чего в Requires попадают и Apache::Const и
> > Apache::Constants. Это perl-Apache-DBI 0.94, собирал сам для
> > 2.2.
>
> Думаю, что решена, т.к. константные функции с пустым прототипом
> подставляются на стадии компиляции (perlsub/Constant Functions), а потом
> по дереву проходится оптимизатор (perlguts/constant folding).
>
> $ perl -MO=Concise,-terse -e 'sub true(){1} if(true){require "asdf"} else{require "zxcv"}'
> LISTOP (0x80662c0) leave [1]
> OP (0x804fc88) enter
> COP (0x80661e0) nextstate
> LISTOP (0x8066420) scope
> OP (0x804fce0) null [174]
> UNOP (0x80663c8) require
> SVOP (0x80662f8) const [1] PV (0x80643f0) "asdf"
> -e syntax OK
> $
Иными словами, если в том коде, который ты привёл, только чуть выше,
есть "use mod_perl;", то результат будет зависеть от версии mod_perl'а
в сборочной среде. Иначе результат всегда будет по ветке else, т.к.
$mod_perl::VERSION даёт undef и undef >= 1.99 даёт false.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?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/20041208/350c1106/attachment-0001.bin>
Подробная информация о списке рассылки Devel