http://www.perlmonks.org?node_id=717859

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

Hi

I'm not sure if it's a bug or a matter of configuration. When I use perl5db.pl as a perl-shell and any error occurs, some special variables and settings get lost. This error is not reproducible with V1.3, but this belongs to Perl 5.10 and I'm not sure if I can safely install this version in conjunction with Perl 5.8.8.

Here an example:

lanx@xubuntu:~$ perl -de0 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::(-e:1): 0 DB<1> $\="XXX" DB<2> print XXX DB<3> print 5/0 Illegal division by zero at (eval 12)[/usr/share/perl/5.8/perl5db.pl:6 +28] line 2. at (eval 12)[/usr/share/perl/5.8/perl5db.pl:628] line 2 eval '($@, $!, $^E, $,, $/, $\\, $^W) = @saved;package main; $^D = + $^D | $DB::db_stop; print 5/0; ;' called at /usr/share/perl/5.8/perl5db.pl line 628 DB::eval called at /usr/share/perl/5.8/perl5db.pl line 3410 DB::DB called at -e line 1 DB<4> print DB<5>
Thanx

- LanX

Replies are listed 'Best First'.
Re: perl5db.pl 1.28: Settings deleted after error
by Anonymous Monk on Oct 18, 2008 at 01:01 UTC
    You can't use it as-is, because it uses defined-or ( $var //= 'new'; ), a perl-5.10 feature. Here's a patch to fix that
    --- perl5db.pl 2007-12-18 11:38:11.000000000 -0800 +++ perl5dbFOR5.8.pl 2008-10-17 18:00:50.812500000 -0700 @@ -6025,7 +6025,7 @@ } ## end sub setterm sub load_hist { - $histfile //= option_val("HistFile", undef); + $histsize = option_val("HistFile",undef) unless defined $hintsize +;#patch-5.8 $histfile //= option_val("HistFile", undef); return unless defined $histfile; open my $fh, "<", $histfile or return; local $/ = "\n"; @@ -6043,7 +6043,7 @@ eval { require File::Basename } or return; File::Path::mkpath(File::Basename::dirname($histfile)); open my $fh, ">", $histfile or die "Could not open '$histfile': $ +!"; - $histsize //= option_val("HistSize",100); + $histsize = option_val("HistSize",100) unless defined $hintsize;# +patch-5.8 $histsize //= option_val("HistSize",100); my @copy = grep { $_ ne '?' } @hist; my $start = scalar(@copy) > $histsize ? scalar(@copy)-$histsize : + 0; for ($start .. $#copy) {
      Thank you

      ... wouldn't it be better to contact the author to improve the official release? Or will I get the answer that I'm supposed to install 5.10?

        perl5db ought to have a
        use 5.010000;
        statement, aside from that, you will probably get the answer to install 5.10, as perl5db is only distributed with perl.