Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

If your program requires input, for example,
print "How much would you like to invest in Microsoft? \n" $invest = <STDIN>; chomp $invest; $losses = $invest; print "You will lose $losses \n";
and I run perldebug, using s to step through the lines, when I get to the second line, I will need to input something. When running the debugger, though, it just steps through this line and $invest remains undefined. How do I get the debugger to let me input the values where the program needs them? Thanks in advance, Jim

Replies are listed 'Best First'.
Re: Debugger useage (sorry
by mikfire (Deacon) on May 03, 2000 at 20:46 UTC
    I am going to assume you are doing something more interesting than this - my perl5.005_03 debugger stops and waits for input before continuing.

    In a broader answer though, it is good to remember that the debugger has complete access to all of your namespaces. Try something like this:

    1. set a break point to the line immediately after the assignment. In the case you have given, you would set the break point to line 3.
    2. Continue execution.
    3. When the debugger stops, simply type in the assignment like this: $invest = "nothing\n"; It is important ( translation: this has bitten me so many times I can remember it now ) to remember then line you have stopped on ( chomp $invest in this case ) hasn't executed yet.
    4. Continue your debugging.

    I am curious to know which debugger you are using and version number - it seems it is kinda broken.

    Mik
    Mik Firestone ( perlus bigotus maximus )

Re: Debugger useage (sorry
by perlmonkey (Hermit) on May 04, 2000 at 09:24 UTC
    I thought I would mention that there is a graphical debugger that is written in Perl/Tk.

    It is totally awesome, and it has saved my ass countless times now. You need the Tk libraries, and the perl modules Devel:ptkdb and Tk.

    There are some minor bugs in it, but as a whole I dont think you will regret installing it.
      Another debugger option, at least under Unixes, is "ddd", the Data Display Debugger, which is a graphic front-end to the standard dbx, or gdb, or Java's jdb, or perl's debugger, or python's debugger, as necessary.
Re: Debugger useage (sorry
by Anonymous Monk on May 03, 2000 at 22:55 UTC
    Guess what? Now I'm bitten too. If I'd just stepped through one more line, I'd have seen it sitting there waiting for my input. So...no problem after all. Thanks for your help, you got me to go back and try it again. Jim