This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Quote string argument in example -- necessary if using strict subs
[perl5.git] / lib / diagnostics.pm
index 073a456..3560f2d 100755 (executable)
@@ -1,9 +1,13 @@
 #!/usr/local/bin/perl
 eval 'exec perl -S $0  ${1+"$@"}'
-    if $0;
+    if 0;
 
 use Config;
-$diagnostics::PODFILE= $Config{privlib} . "/pod/perldiag.pod";
+if ($^O eq 'VMS') {
+   $diagnostics::PODFILE = VMS::Filespec::unixify($Config{'privlib'}) .
+                           '/pod/perldiag.pod';
+}
+else { $diagnostics::PODFILE= $Config{privlib} . "/pod/perldiag.pod"; }
 
 package diagnostics;
 require 5.001;
@@ -406,16 +410,17 @@ sub warn_trap {
     if (caller eq $WHOAMI or !splainthis($warning)) {
        print STDERR $warning;
     } 
-    &$oldwarn if $oldwarn and $oldwarn ne \&warn_trap;
+    &$oldwarn if defined $oldwarn and $oldwarn and $oldwarn ne \&warn_trap;
 };
 
 sub death_trap {
     my $exception = $_[0];
     splainthis($exception);
     if (caller eq $WHOAMI) { print STDERR "INTERNAL EXCEPTION: $exception"; } 
-    &$olddie if defined $olddie and $olddie ne \&death_trap;
+    &$olddie if defined $olddie and $olddie and $olddie ne \&death_trap;
     $SIG{__DIE__} = $SIG{__WARN__} = '';
-    confess "Uncaught exception from user code:\n\t$exception    Bailing out";
+    local($Carp::CarpLevel) = 1;
+    confess "Uncaught exception from user code:\n\t$exception";
        # up we go; where we stop, nobody knows, but i think we die now
        # but i'm deeply afraid of the &$olddie guy reraising and us getting
        # into an indirect recursion loop