Существует три проблемы с Class::HPLOO
(которые, как я уже отмечал ранее, с 2005 года не обновлялись), которые приводят к сбою в современных perls.
Какобнаруженная в предыдущем посте , устаревшая конструкция defined (@array)
используется один раз в lib/Class/HPLOO.pm' and three times in
lib / Class / HPLOO / Base.pm`.Эта конструкция была запрещена начиная с v5.22
Текущий каталог (.
) больше не находится в @INC
(я думаю, что с v5.24).Таким образом, строки в test.pl
, такие как
require "test/classtest.pm"
, либо все должны быть переписаны как
require "./test/classtest.pm"
, либо проще исправить
use lib '.';
вверху скрипта.
В lib/Class/HPLOO.pm
, строка 1077, есть регулярное выражение с "неэкранированной левой скобкой"
$sub =~ s/(\S)( {) (\S)/$1$2\n$FIRST_SUB_IDENT $3/gs ;
{
- метасимвол регулярного выражения, иначиная с версии 5.22 было запрещено использовать его в контексте, где не указывается количество.Исправление, как следует из сообщения об ошибке, состоит в том, чтобы избежать его.
$sub =~ s/(\S)( \{) (\S)/$1$2\n$FIRST_SUB_IDENT $3/gs ;
Внесите эти три изменения в код, который вы загружаете из CPAN, и модуль должен основываться на современном Perls.Если вы чувствуете себя полезным, вы можете отправить отчет об ошибке (если хотите, со ссылкой на этот пост) или даже патч с электронным письмом на bug-Class-HPLOO@rt.cpan.org