首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl调试器中防止模块间的虚假监视输出

在Perl调试器中防止模块间的虚假监视输出
EN

Stack Overflow用户
提问于 2011-04-08 06:33:46
回答 1查看 85关注 0票数 2

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

代码语言:javascript
复制
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%+的情况下逐行执行它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-08 06:44:58

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

代码语言:javascript
复制
package MyPackage;
use strict;
...
use vars qw($myVar);
...

代码语言:javascript
复制
package MyPackage;
our $myVar = 'foo_part_1';
...

然后用w $MyPackage::myVar观看

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5588444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档