Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > глубина рекурсии


Автор: trigger 26.9.2006, 10:30
Совершенно недавно благородный nitr  подсказал как решается задача http://www.forum.vingrad.ru/index.php?showtopic=112700&st=15#. 
Но в процессе выполнения скрипта  КОМОД говорит о глубокой рекурсии я понимаю как об ошибке
Deep recursion on subroutine "main::get_a"
и в процессе появляются битые ссылки.

подскажите какими средствами можно управлять глубиной рекурсии.
илиже не стоит на это обращать внимание ?

Автор: amg 26.9.2006, 11:08
Это лишь предупреждение от Perl (скрипт будет продолжать выполняться). Оно означает, что подпрограмма вызвала себя на 100 раз больше, чем вернулась. Разработчики Perl'а полагают, что такого не должно быть, если только вы не пишете какой-то очень специальный софт (см. perldoc perldiag). 
Выдачу этого предупреждения можно отключить (см. perldoc perllexwarn), если вместо ключика -w (#!/usr/bin/perl -w) использовать 
Код

use warnings('all');
no warnings('recursion');

Автор: trigger 26.9.2006, 11:11
тоесть можно не обращать на это внимания ? 

Автор: amg 26.9.2006, 11:46
Цитата(trigger @  26.9.2006,  11:11 Найти цитируемый пост)
тоесть можно не обращать на это внимания ? 
Ну, наверное, все же надо обращать внимание, затем и предупреждение о глубокой рекурсии, тем более что 
Цитата
...в процессе появляются битые ссылки.


Автор: trigger 26.9.2006, 11:53
а вы не моглибы подсказать какими методами управлять этой самой глубиной ? 

Автор: Danissimo 26.9.2006, 15:06
Конечно, подскажу. Алгоритмом. Других путей нет.

Автор: trigger 26.9.2006, 15:19
Да - подскажите плз именно путь решения а не само решение. а потом покажу проверите - ок ? smile

наверно чтото не то ляпнул - а это как алгоритмом?

Автор: nitr 26.9.2006, 15:21
trigger, посмотри последнюю версию мною предложенную.
И сам проверяй, потому что у тебя там ссылки вида /bla-bla/ , неполные короче, полные вида
http://bla-bla.com/bla-bla

Проверять можно так... самое простое print "";
У тебя там сложности с циклическими были, я исправил, полные тоже теперь работали, может другие косяки, но у меня на том сайте не было 100, вроде.

Автор: trigger 26.9.2006, 15:42
О nitr  Здравствуйте
Так взял тот последний натравил на  другой сайт - и начало  выдавать кривые ссылки - на маленьких нормально работает и красиво все отдает а более объемистые начинает ломать. я не прошу переделывать - а прошу подсказать какими методами это устраняется и как управлять глубиной рекурсии - что для этого используют. 

Автор: nitr 26.9.2006, 15:57
trigger, я же говорил
что это для вашего сайта, т.к. в нём относительные ссылки, скрипт доработать или коммент поставь на $url и будет для других

можно проверку на относительную регулярку включить, и только в этом случае прибавлять $url или что там...
короче для других сайтов, надо доработать скрипт

Автор: trigger 26.9.2006, 21:22
nitr признаю - был не прав подняв панику - скрипт работает чудесно (разобрался)
Но за разъяснения спасибо всем

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)