在Perl调试器中防止模块之间的伪监视输出

时间:2011-04-07 22:33:46

标签: perl debugging

使用perl -d,我在我的脚本中使用的变量上设置了一个监视(w $myVar)。每当我的脚本调用perl模块时,手表会“重置”为未定义的值。

Watchpoint 0:   $myVar changed:
    old value:  'foo_part_1'
    new value:  ''
Net::FTP::cwd(/usr/lib/perl5/5.8.8/Net/FTP.pm:548):
548:     @_ == 1 || @_ == 2 or croak 'usage: $ftp->cwd( [ DIR ] )';
__DB<2> r
scalar context return from Net::FTP::cwd: 1
Watchpoint 0:   $myVar changed:
    old value:  ''
    new value:  'foo_part_1'

是否可以抑制;
(1)源于范围的更改消息在perl中发生更改。或;

(2)模块的整个执行输出?在大多数情况下,我没有写它,我很确定我无法调试它,所以我真的不在乎看到它在95%以上的情况下逐行执行。

1 个答案:

答案 0 :(得分:1)

您可以使用$myVar作为全局变量或包变量来解决此问题,然后“观察”它的完全限定名称:

package MyPackage;
use strict;
...
use vars qw($myVar);
...

package MyPackage;
our $myVar = 'foo_part_1';
...

然后使用w $MyPackage::myVar观看