LINUX.ORG.RU

Вопрос по defined в perl5

 , , ,


1

2

Всем здравствуйте.

Пытаюсь реанимировать один древний перловый модуль, при этом получаю след. ошибку:

# cpan X11:Athena
...
ERROR from evaluation of /root/.local/share/.cpan/build/X11-Motif-1.1b3-I6Ipt3/Toolkit/Makefile.PL: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at ./Makefile.PL line 16.
...

При этом 16-я строка в Makefile.PL выглядит так:

 16 if (defined @defines) {
 17     push(@extra_MakeMaker_flags, 'DEFINE' => join(' ', @defines));
 18 }

а сами @defines определены как

 10 @defines = ();

Я уже в курсе, что «defined is deprecated in perl 5.6.1», но вот сам ни разу не perl-программист.

Вопрос 1:

Как правильно изменить указанный код? Достаточно ли просто убрать defined?

Вопрос 2:

Каков процесс приёма патчей в CPAN в случае, когда автор не обновлял свой модуль вот уж 20 лет как?

★★★★★

my @defines;

if (@defines) {
    push @extra_MakeMaker_flags, (
        DEFINE => join(q{ }, @defines),
    );
}

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

outtaspace ★★★ ()
Последнее исправление: outtaspace (всего исправлений: 2)
Ответ на: комментарий от Bass

Можно попробовать и не форкать. Сначала пытаешься связаться с автором, а если не удаётся пишешь на modules@perl.org, что хочешь поддерживать этот модуль. Подробнее тут: http://www.cpan.org/misc/cpan-faq.html#How_adopt_module Но на это может уйти несколько месяцев конечно.

Olegymous ★★ ()