What problems do you have? For me, it seems to work as specified:
Assuming the following program
#!/usr/bin/perl
for my $c (1..1000) {
$onto{'PROBLEM'}{'mappings'} = "foo" if $c == 99;
}
here's an example session:
$ perl -d watchpoint-test.pl
Loading DB routines from perl5db.pl version 1.28
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(watchpoint-test.pl:2): for my $c (1..1000) {
DB<1> w $onto{'PROBLEM'}{'mappings'}
DB<2> c
Watchpoint 0: $onto{'PROBLEM'}{'mappings'} changed:
old value: ''
new value: 'foo'
main::(watchpoint-test.pl:3): $onto{'PROBLEM'}{'mappings'}
+= "foo" if $c == 99;
DB<2> p $c
100
DB<3> c
Watchpoint 0: $onto{'PROBLEM'}{'mappings'} changed:
old value: 'foo'
new value: ''
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
DB<3> q
Maybe you're using an old version of Perl - I dimly remember that commands were slightly different in 5.6.x
(I think 'w' was 'W', but I could be wrong).
|