[Moscow.pm] Иногда проваливается сквозь eval

Victor Efimov victor на vsespb.ru
Вс Фев 15 04:11:48 PST 2015


Навзвание темы создала впечатление что что-то с perl и eval не так работаел ;)

utf8::downgrade и должен падать если в сроке есть символы с кодом больше 255:
===
Fails if the original UTF-X sequence cannot be represented in the
native 8 bit encoding. On failure dies or, if the value of $fail_ok is
true, returns false.
===

Как продиагностировать - так и продиагностировать - если падает - сам
символы с кодом больше 255. Сдампить их можно Devel::Peek.

Сам код eval { utf8::downgrade $str } if utf8::is_utf8 $str;
бессмысленен и эквивалентен eval { utf8::downgrade $str }

15 февраля 2015 г., 12:29 пользователь Ivan Petrov
<i.petro.77.00 на gmail.com> написал:
> вот такой код
>
> 32 eval { utf8::downgrade $str } if utf8::is_utf8 $str;
> 33 warn $@ if $@;
>
> Изредка (очень редко) но падает в строке 1
> то есть глобальный eval ловит ошибку
>
> Wide character in subroutine entry at FILE line 32
>
> в глобальном eval мы в лог кладем полностью все входные данные
> и далее на тех же входных данных тест не падает уже.
>
> все происходит в вебсервере.
> пользователь повторяет тот же самый ввод и после 500-ки которую он
> получил на прошлом падении он получает уже работающую страницу.
>
> как подиагностировать подобную багу?
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


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