Я пытаюсь вызвать вложенную рекурсивную функцию perl, но не могу определить правильный синтаксис.
Вопрос : Каков правильный синтаксис для выполнения рекурсивного вызова для вложенной функции (если вложенные функции вообще должны вызываться рекурсивно)?
Ответ: Обратитесь к предлагаемому псевдокоду в принятом ответе.
Вот фрагмент псевдокода:
use Scalar::Util;
sub outerfunction {
my $innerfunction = sub {
# Do something
innerfunction();
# Do other things
};
Scalar::Util::weaken($innerfunction);
&$innerfunction(@_);
};
Я попытался вызвать внутреннюю функцию следующим образом (с соответствующими сообщениями об ошибках):
innerfunction
Неопределенная подпрограмма и главная :: внутренняя функция
&innerfunction
Не определенная подпрограмма и главная :: внутренняя функция
&$innerfunction
Глобальному символу "$ innerfunction" требуется явное имя пакета
Я также пытался объявить внутреннюю функцию как локальную, но получил следующее:
Глобальный символ "$ innerfunction" требует явного имени пакета
У меня нет большого опыта работы с интерпретируемыми языками, поэтому любые непредвиденные комментарии, связанные с утечкой памяти / стеком / повреждением или другими опасностями сh также будет высоко оценен приведенный выше псевдокод (кроме системных ограничений на рекурсию).
Спасибо!Perl v5.10.1 работает в Linux 2.6.34.7-61.fc13.x86_64