如何调试另一个perlscript中使用的perl脚本?

时间:2012-08-17 12:35:54

标签: perl debugging

如何调试另一个perlscript中使用的perl脚本。我们可以单独调试。是否可以一步调试?

例如:

!/user/bin/perl

my $param= 8;

my @res=\`perl extract.pl $config`;

print "The results is ....  @res\n";

同样,我们可以调试shell脚本中使用的perl脚本吗?

感谢。

4 个答案:

答案 0 :(得分:4)

您可以将-d切换添加到您要调用的脚本的shebang行:

#!/usr/bin/perl -d

答案 1 :(得分:4)

动态解决方案:

my $dswitch = $INC{"perl5db.pl"} ? "-d" : "";
my @res=`perl $dswitch extract.pl $config`;
在使用调试器时,

$INC{"perl5db.pl"}为真,而在使用调试器时则为false。

答案 2 :(得分:3)

“正确”的做法是更改您的设计,这样您就不会通过系统命令调用其他脚本。那么你将拥有一个调试环境。

最好的设计是将extract.pl放入模块中。

您还可以使用do命令从其他文件导入代码:do 'extract.pl'。然后,唯一需要的改变可能就是你传递$config的方式。

这些方法中的任何一种都很容易实现,并且对于持续开发会有其他好处。也许你有充分的理由不这样做,但如果你还没有,我会首先考虑这个。

答案 3 :(得分:0)

只需调试extract.pl传入$config中的值即可。如果您不知道它是什么,那么古老的printf将为您做到这一点。

say "\$config='$config'";

然后做:

perl -d extract.pl 'Stuff that printed in config'. 

由于这两个是独立的进程,唯一的通信是在命令行上传递的内容以及被调用脚本打印的内容。因此,调用脚本能够在没有调用脚本的情况下进行测试。 (除非你设置了某种IPC或共享内存或类似的东西。)