Ilya,
Here is a patch for your fine perl5db.pl v0.9 that I FTPed a
couple of days ago. I didn't address supporting different
open/close/init/etc. routines at this point. However, I found
your "O" command extremely useful, to the point that I think
this patch is very useful and not at all a kludge. I've copied
the list in case others are interested.
Feel free to reject any of these changes. I tried to adopt your
style, but my rather strange style probably seeped through in a
few places. Let me know how it works under OS/2.
Here are descriptions of most of the changes I made:
Gives credit to Ilya, shows where to FTP new versions.
Shows the release of perl5db.pl (was 0.9, now 0.91).
"|dbcmd" runs "dbcmd" but sends DB::OUT to "pager" command or file.
"!!cmd" runs "cmd" in a subprocess (see ShellBang option).
"!cmd" runs "$ENV{SHELL} -c 'cmd'" (if ShellBang and RecallCommand differ).
"!pattern" added to help message (recalls last command starting w/ pattern).
Can change "!-N" command recall to ".-N", etc. (see RecallCommand option).
Try open(IN,"+<$console") and open(OUT,"+>$console") first so UnixWare "more"
doesn't croak when trying to read from STDOUT!!
The help text varies slightly when RecallCommand or ShellBang is changed.
"O" command enhancements:
Setting an option ignores case of option names.
Options names like "wordOneTwo" changed to "WordOneTwo" for consistancy.
When showing option values, lines up the "="s.
New opt, RecallCommand, changes char for commands recall (def="!").
New opt, ShellBang, changes char to run command in subshell (def="!").
New opt, Pager, where to write DB::OUT when "|" used: $ENV{PAGER}||"|more".
Can put whitespace in option values: `O pager"pg -n"', `O pager(cat -vet)'.
"O option?" shows value of just one option.
Echo option name and new option value whenever user changes an option.
Invalid "O" command in $ENV{PERLDB_OPTS} now writes an error to
STDERR not "Can't use an undefined value as a symbol reference"
For simple cases, CTRL-C and "q" work nicely. For other cases
the debugger just exits, but I've added code that I believe
will correct this on perls that have your patch applied (which
I haven't done yet). You could try:
DB<1> |while(1){print DB::OUT ++$n,"\n"}
[...]
CTRL-C
to see if I got it right (probably not but I'll look at it later).
Please let me know if I can be of any further help.
--
Tye McQueen tye@metronet.com || tye@doober.usu.edu
Nothing is obvious unless you are overlooking something
http://www.metronet.com/~tye/ (scripts, links, nothing fancy)
begin 0 perl5db.patch.gz
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
M`W>,IR-%OG@`GYP_6'3?M$E[D:7V<EC6-0K%(6_$GH[8(&X#Z'PE?<LV6
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
4IE-H[-+$-3S=^^$_!<]YSLU-``#6
`
end