Предотвращение ложных результатов наблюдения между модулями в Perl Debugger - PullRequest
2 голосов
/ 08 апреля 2011

Используя 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 Ответ

1 голос
/ 08 апреля 2011

Вы можете обойти это, используя $myVar как глобальную переменную или переменную пакета, а затем "наблюдая" за его полным именем:

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

или

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

изатем смотреть с w $MyPackage::myVar:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...