perl - 如何在 Perl 中设置硬最大递归深度?

标签 perl recursion

尽管在某些情况下我可能希望在我的代码中允许深度递归,但我希望能够在某些情况下(例如在测试时)禁用它。

我知道在使用调试器时,我可以使用 $DB::deep 来指定最大递归深度,我所追求的功能基本相同,但即使不在调试器中也可用。

我查看了 CPAN,但找不到任何内容。对 PerlMonks 的搜索使我找到了一个关于 changing the behaviour of the deep recursion warning 的线程。我所追求的是能够完全阻止递归(例如,如果递归太深,则为 die)。

有这个功能吗?

如果解决方案允许我对其进行本地化,那么我可以加分,以便我可以控制最大递归深度的范围。

最佳答案

正如之前的答案所提到的,您只能通过重新编译 Perl 来更改触发警告的级别。

但是您可以像这样使现有警告致命:

use warnings FATAL => 'recursion';

关于perl - 如何在 Perl 中设置硬最大递归深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52003112/

相关文章:

Perl 一个类轮用变量在文件中查找和替换

haskell - 支持原生递归

perl - 如何使用 ActivePerl 运行 Perl 脚本?

perl - Perl 开发人员的基本知识要求是什么?

arrays - 比较两个关联数组

scala - Scala 中递归可变参数函数的语法

c - 为什么允许递归会使 C 在 8 位 CPU 上变慢/效率低下

c - 释放整个链表,这个算法正确吗?

c++ - 仅由长度为 1 到 10 的两个字母生成所有字符串?

perl - Perl Tie::File 模块的限制