Как я могу увидеть значения переменных из трассировки Perl? - PullRequest
5 голосов
/ 10 февраля 2011

Моя цель - отладить (шаг за шагом) приведенный ниже скрипт sample.pl.

Проблема: я не получаю реальные значения переменных ($ top_number, $ x, $ total).

Мой вопрос: как увидеть реальные целочисленные значения ($ top_number, $ x, $ total) из вывода трассировки?

Что необходимо изменить в perl -d:Trace, чтобыполучить числа, а не: $ top_number, $ x, $ total?

Пример из результатов трассировки:

[root@linux /tmp]# perl -d:Trace ./sample.pl 
>> ./sampl.pl:9: $top_number = 100;
>> ./sampl.pl:10: $x = 1;
>> ./sampl.pl:11: $total = 0;
>> ./sampl.pl:12: while ( $x <= $top_number ) {
>> ./sampl.pl:13:       $total = $total + $x;   # short form: $total += $x;
>> ./sampl.pl:14:       $x += 1;                # do you follow this short form?
>> ./sampl.pl:13:       $total = $total + $x;   # short form: $total += $x;
>> ./sampl.pl:14:       $x += 1;                # do you follow this short form?
>> ./sampl.pl:13:       $total = $total + $x;   # short form: $total += $x;
>> ./sampl.pl:14:       $x += 1;                # do you follow this short form?
.
.

[root@linux /tmp]#more sample.pl script

#!/usr/bin/perl 


$top_number = 100;
$x = 1;
$total = 0;
while ( $x <= $top_number ) {
    $total = $total + $x;   # short form: $total += $x;
    $x += 1;                # do you follow this short form?
}

print "The total from 1 to $top_number is $total\n";

Ответы [ 2 ]

7 голосов
/ 10 февраля 2011

Я предполагаю, что вы хотите видеть значения переменных $x и $total для каждой итерации цикла.Для POD Devel :: Trace не указано, что он может это сделать.

Однако Devel :: DumpTrace может.

perl -d:DumpTrace ./sample.pl

>>>>> hw.pl:7:      $top_number:100 = 100;
>>>>> hw.pl:8:      $x:1 = 1;
>>>>> hw.pl:9:      $total:0 = 0;
>>>>> hw.pl:10:     while ( $x:1 <= $top_number:100 ) {
>>>>> hw.pl:11:         $total:1 = $total:0 + $x:1;   # short form: $total:0 += $x:1;
>>>>> hw.pl:12:         $x:2 += 1;                # do you follow this short form?
>>>>> hw.pl:11:         $total:3 = $total:1 + $x:2;   # short form: $total:1 += $x:2;
>>>>> hw.pl:12:         $x:3 += 1;                # do you follow this short form?
>>>>> hw.pl:11:         $total:6 = $total:3 + $x:3;   # short form: $total:3 += $x:3;
0 голосов
/ 10 февраля 2011

Взгляните на Variable::Magic. Это может быть решением для переменной «трассировки».

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