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

devrow на gmail.com devrow на gmail.com
Чт Окт 16 02:18:13 PDT 2014


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

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

если натравить 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