在调试perl代码期间修改变量的值

时间:2012-11-06 09:17:35

标签: linux perl debugging

我正在使用“perl -d”开关在SuSe Linux上调试perl程序。

在调试时,该程序正在报告XYZ variable is not set

如何在调试器中设置XYZ的值?

我尝试在调试器内部进行操作但不能正常工作。

set XYZ=ABC
my $XYZ=ABC
setenv XYZ ABC

我对此做了一些谷歌。但找不到我想要的东西。

2 个答案:

答案 0 :(得分:4)

调试控制台采用Perl表达式,因此如果值是字符串,则需要引用该值。

您必须将程序移动到抛出错误的行之前(查看断点,在调试器中它是b <line>),然后设置值。

> $XYZ='ABC'

这是一个很好的资源:http://obsidianrook.com/devnotes/talks/perl_debugger/

答案 1 :(得分:2)

假设您正在尝试将$ XYZ设置为字符串ABC try:

$XYZ = 'ABC'

如果您使用

my $XYZ='ABC'

它将仅在当前范围内定义变量$ XYZ。从调试器中的测试开始,看起来该范围不会扩展到调试控制台之外(即它只能在控制台的那一行上访问)。 E.G。

  DB<2> my $x = "hello"; print "$x"
hello
  DB<3> print $x
Use of uninitialized value $x in print at (eval 8)[/usr/share/perl/5.12/perl5db.pl:638] line 2.