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

jja*_*jja 4 recursion perl

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

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

我看了CPAN,但我找不到任何东西.在PerlMonks上搜索引导我进入一个关于改变深度递归警告行为的线程.我所追求的是能够完全阻止递归(例如,die如果递归过深).

这个功能是否存在?

如果解决方案允许我对其进行本地化,那么奖励点就可以控制最大递归深度的范围.

Dav*_*oss 9

如前面的回答所提到的,您只能通过重新编译Perl来更改触发警告的级别.

但你可以使现有的警告致命:

use warnings FATAL => 'recursion';
Run Code Online (Sandbox Code Playgroud)