У меня проблема в Perl, которая, я считаю, не из моего кода. У меня есть эта подпрограмма:Perl: ошибка отладки интерпретатора?
sub foo
{
my $depth = $_[0];
my $input = $_[1];
my $result = mymodule::do_calc($input);
if ($result) { foo($depth+1,$result); }
print "mark $depth\n";
}
Программа работает отлично, как есть. Однако, если я прокомментирую линию печати, программа переходит в бесконечный цикл.
Если я поставил точку останова перед вызовом foo, я вижу, что $ depth принимает значение хеш-ссылки. С линией печати на месте это не так.
Кто-нибудь знает, куда идти отсюда? Я предполагаю, что я запускаю какую-то ошибку интерпретатора?
Пока '$ result' истинно,' foo' будет вызывать себя, поэтому все зависит от того, что делает ваша функция 'module :: do_calc'. Если 'do_calc' возвращает истинное значение все время, это вызовет бесконечный вызов' foo' внутри 'foo', который через некоторое время должен закончиться ошибкой из-за ограниченной глубины стека. К сожалению, вы не опубликовали функцию 'do_calc', поэтому вы не можете предсказать, что делает ваш код. –