如何调试另一个perlscript中使用的perl脚本。我们可以单独调试。是否可以一步调试?
例如:
!/user/bin/perl
my $param= 8;
my @res=\`perl extract.pl $config`;
print "The results is .... @res\n";
同样,我们可以调试shell脚本中使用的perl脚本吗?
感谢。
答案 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或共享内存或类似的东西。)