perl - 是否可以在 Perl 应用程序中打开 Perl 的 -d 标志并将其应用于自身?

标签 perl

我想在 Perl 程序中使用类似 Devel::Trace 的东西来捕获程序正在执行的操作,但我希望应用程序自行打开它。具体而言。我希望程序能够进行自测试。我想捕获程序在自检模式下执行的操作的日志,然后使用它们来验证程序是否正常运行。我想从程序内部执行此操作,以便我可以访问程序收集的其他信息,即不仅仅是痕迹。而且,我不想一直使用 -d 开关。

我想我可以让程序使用 -d 开关递归地调用自身,如果它发现它应该进行自测试并且它尚未处于打开的状态。我认为有一种方法可以检测到这一点。这有点笨拙,但可能已经足够了。

目前自检大多数都是递归调用main,同样的函数main调用,但传入自己的参数列表来替换ARGV。但是,它也可以通过覆盖变量与其他模块交互,例如实现模拟,所以我更愿意留在同一个解释器中,只需打开对 &DB.DB 的调用,这样我就可以捕获函数何时被调用和退出等。

最佳答案

$^P使用 -d 时为 true。

BEGIN { exec $^X, "-d:Trace", "--", $0, @ARGV if !$^P }

你也可以使用

#!/usr/bin/perl -d:Trace

关于perl - 是否可以在 Perl 应用程序中打开 Perl 的 -d 标志并将其应用于自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75962399/

相关文章:

perl - 使用 Perl 采用 Unicode 方式的 list

perl - 在 shell 命令中插入 perl 变量

perl - 如何计算匹配的数字

windows - 在 Windows 下为 Perl 编译 PAR

database - 在 Perl 中外部存储散列数据

perl - 每个优秀的 Perl 开发人员都应该能够回答的问题

perl - 需要一个脚本来从文本文件中去除额外的换行字符

perl - 在匹配的文本之间插入换行符会被覆盖

perl - 命令行枢轴

regex - 如何重置 $1 perl 变量?