Ловушки Perl
Истории-страшилки про Perl-программиста, с подсказками и разоблачениями
Главная
О блоге
Об авторах
Почему?
rss
@perltrapcom
Программист написал функцию для классификации книг на интересные и не очень:
Однако…
Функция работала долго. Очень долго.
Похоже было, что она собирается работать вечно.
Виновата “отладочная печать”, которую программист добавил в строке 27. Дело в том, что каждый хеш имеет (единственный) итератор, который используется функциями keys
, values
и each
. Функция Dump модуля YAML перебирает все элементы хеша (а как бы она иначе могла его сериализовать?), и тем самым сбрасывает этот итератор. Поэтому на каждой итерации цикла while в строчке 22 обработка хеша начинается сначала, и цикл никогда не заканчивался нормально.