Perl -d和modulino问题

时间:2012-02-20 17:12:21

标签: perl debugging modulino

我有一些脚本,我已经开始使用“modulino”的想法进行单元测试。我遇到一个问题,当使用“perl -d”调用脚本时,脚本不会运行,因为caller()返回一个真值。

我将脚本的主体包裹在main()中,并将一些子程序从main()中慢慢拉出到自己的子程序中。

在剧本的顶部,我有:

main(@ARGS) unless caller();

当在.t测试中调用时,它可以按我的意愿工作,而不是运行main(),所以我可以测试子程序。当我从CLI调用脚本时,它可以很好地调用main()。

当我从CLI调用它时出现问题:

perl -d myscript.pl

在此阶段,调用者返回一个有效值(而不是undef),并且不调用main。

对于如何处理此问题,我们将非常感激。

1 个答案:

答案 0 :(得分:9)

-d开关的情况与测试类似 - 您的代码由其他内容执行,在本例中为调试器。

您可以通过手动调试调试器来自己运行main,也可以检测caller是否是调试器。类似的东西:

main(@ARGS) if !caller() || (caller)[0] eq 'DB';