модуль Perl Class :: HPLOO v0.23 проблема с установкой - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь установить Perl-модуль Class :: HPLOO и столкнулся с проблемой.Я использую Perl версии 5.28.0.Мне очень нужна помощь, чтобы решить эту проблему, и я пытаюсь решить эту проблему, так как последние несколько дней безуспешно: (.

Я пытался установить через cpan и получаю сообщение об ошибке ниже:

# Running under perl version 5.028000 for linux
# Current time local: Thu Aug 23 22:50:40 2018
# Current time GMT:   Fri Aug 24 02:50:40 2018
# Using Test.pm version 1.31
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/({ <-- HERE \s+)/ at blib/lib/Class/HPLOO.pm line 1072.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/(\S)( { <-- HERE ) (\S)/ at blib/lib/Class/HPLOO.pm line 1077.
not ok 1
# Failed test 1 in test.pl at line 9
#  test.pl line 9 is:   ok(!$@) ;
Undefined subroutine &Foo::new_call_BEGIN called at test/classtest.pm line 5.
make: *** [test_dynamic] Error 255

Я скачал модуль с https://metacpan.org/pod/Class::HPLOO веб-сайта и попытался установить вручную, но та же проблема.

# Running under perl version 5.028000 for linux
# Current time local: Fri Aug 24 12:42:24 2018
# Current time GMT:   Fri Aug 24 16:42:24 2018
# Using Test.pm version 1.31
not ok 1
# Failed test 1 in test.pl at line 9
#  test.pl line 9 is:   ok(!$@) ;
Can't locate object method "new" via package "Foo" at test.pl line 11.
make: *** [test_dynamic] Error 2

Пожалуйста, помогите решить эту проблему. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Кроме изменений, предложенных Mob, вам нужно будет отредактировать файл test.pl для модуля.В 4 местах вы найдете "eval {require" some / path> "};"измените его на "eval {require" ./some/path "};"

Также появится неэкранированная левая скобка, которая, очевидно, должна быть экранирована.

Это позволило мне успешнопройти установку HPLOO и перейти к успешной установке DBD.

0 голосов
/ 24 августа 2018

Матрица CPAN показывает, что этот модуль испытывает проблемы при сборке на Perl v5.22 или выше. Если вы можете использовать и построить этот модуль на более ранней версии Perl, это один из вариантов для вас.

В журналах показана та же проблема, которую вы обнаружили: устаревшая конструкция регулярного выражения, но это не является фатальной ошибкой (пока) и не является причиной сбоя сборки.

Детализация и запуск тестового скрипта с Perl v5.24 в отладчике, я вижу, что строка

eval { require "test/classtest.pm" } ;

устанавливает $@ (что означает, что вызов require не выполнен) со следующим сообщением:

  DB<1> p $@                                                                                                                                                   
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at test/classtest.pm line 5.
 at test/classtest.pm line 5.
        require test/classtest.pm called at test.pl line 8
        eval {...} called at test.pl line 8
Compilation failed in require at test.pl line 8.

Итак, мы видим, что в этом пакете (который последний раз обновлялся в 2005 году) используется конструкция defined(@array), которая давно устарела и была запрещена с версии v5.22.0 .

Конструкция defined(@array) используется 4 раза в lib/Class/HPLOO/Base.pm и lib/Class/HPLOO.pm. Вы можете попытаться исправить их самостоятельно и пересобрать модуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...