[Moscow.pm] deep recursion on subroutine utf8::swashnen

Victor Efimov victor на vsespb.ru
Сб Окт 25 08:27:13 PDT 2014


25 октября 2014 г., 19:01 пользователь devrow на gmail.com
<devrow на gmail.com> написал:
> On 16.10.2014 13:34, Victor Efimov wrote:
>> Всё равно нужен кусок код, чтобы это нам хотя бы воспроизвести, а
>> потом уже рассуждать..
>
> кусок кода для примера я приводил. + к этому писал, что

пример кода из первого поста
===
$self->{key} = '';
return undef if $self->{key2}->getValue('section', 'value_name') == 0
my $var = undef;
===
падает с ошибкой

syntax error at 33.pl line 4, near "my "
Execution of 33.pl aborted due to compilation errors.

так что не годится.

> парсер отсутствие точки с запятой ловит без проблем, когда,
> цитирую себя же: "если натравить perl -c ./path/to/package.pm
> на этот модуль, то ошибка синтаксиса находится без проблем."
>
> был бы благодарен хотя бы за наводки на то, что может
> происходить или не должно, но происходит, т.к. понимаю, что
> нужно целиком проект запостить, но такой возможности у меня
> нет.

целиком не нужно. нужно взять проект и упрощать его постепенно до
незвисимого, простого примера кода, который любой сможет запустить.
это, кстати, самая сложная часть, возможно проблему найдёте сами =)

иначе, просто всё это

"deep recursion on subroutine utf8::swashnen"
"этот код генерит сабжевую ошибку."
"модуль начинается стандартно:"

выглядит как FUD. если ошибку так легко воспроизвести - Вам не должно
составить труда прислать пример кода.



>
> повторюсь: интересует именно в какой очередности происходит
> подключение/интерпретация модулей и как это связано с use
> utf8, что сначала: стулья или деньги )
>
>>
>> 16 октября 2014 г., 13:18 пользователь devrow на gmail.com
>> <devrow на gmail.com> написал:
>>> дело не в куске кода, это не так важно.
>>> вопрос был о том (извиняюсь, если я не точно выразился),
>>> что происходит, когда вылетает ошибка рекурсии до того как
>>> парсер "пройдет" по коду и найдет ошибку в синтаксисе.
>>>
>>> логично было бы предположить, что сначала должен отработать
>>> парсер и выявить отсутствие точки с запятой, а уже потом,
>>> при выполнении, будет ошибка рекурсии.
>>>
>>> если натравить perl -c ./path/to/package.pm на этот модуль,
>>> то ошибка синтаксиса находится без проблем. почему она не
>>> находится в процессе подгрузки модулей, а вместо этого
>>> получается что-то там про рекурсию...
>>>
>>> спасибо.
>>>
>>> [root на localhost /]# perl -v
>>> This is perl, v5.10.1 (*) built for i386-linux-thread-multi
>>>
>>> On 15.10.2014 23:57, Sergey Aleynikov wrote:
>>>> Добрый день,
>>>>
>>>> Перл 5.20 эту ошибку на этом куске кода не генерирует. Чтобы можно
>>>> было что-то подсказать - нужна версия перла и тест-кейс, который можно
>>>> взять и запустить.
>>>>
>>>> Best regards,
>>>> Sergey Aleynikov
>>>>
>>>>
>>>> 15 октября 2014 г., 23:35 пользователь devrow на gmail.com
>>>> <devrow на gmail.com> написал:
>>>>> всем привет.
>>>>> вопрос чисто академический, просто интересно.
>>>>>
>>>>> $self->{key} = '';
>>>>> return undef if $self->{key2}->getValue('section', 'value_name') == 0
>>>>> my $var = undef;
>>>>>
>>>>> этот код генерит сабжевую ошибку. скорее всего, я чего-то не знаю,
>>>>> т.к. в этом куске, по контексту, ошибка синтаксическая (нет ; во
>>>>> второй строке), но никак не конвертации чего-то во что-то и тем более
>>>>> я никак не предполагал о "грубокой рекурсии".
>>>>>
>>>>> этот кусок находится в модуле (pm), который подружается через use.
>>>>> модуль начинается стандартно:
>>>>>
>>>>> package name;
>>>>> use utf8;
>>>>> use strict;
>>>>> use warnings;
>>>>> ...
>>>>>
>>>>> глюк нашел вопрошая вселенную. голоса ближайшего к нам
>>>>> космоса ответили. после применения метода научного тыка.
>>>>>
>>>>> спс.
>>>>> --
>>>>> Moscow.pm mailing list
>>>>> moscow-pm на pm.org | http://moscow.pm.org
>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


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