-require 5.002; # For (defined ref)
+require 5.014; # For more reliable $@ after eval
package dumpvar;
# Needed for PrettyPrinter only:
# This one is good for variable names:
sub unctrl {
- local($_) = @_;
+ for (my($dummy) = shift) {
local($v) ;
return \$_ if ref \$_ eq "GLOB";
} else {
s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg;
}
- $_;
+ return $_;
+ }
}
sub uniescape {
}
sub stringify {
- local($_,$noticks) = @_;
+ my $string;
+ if (eval { $string = _stringify(@_); 1 }) {
+ return $string;
+ }
+
+ return "<< value could not be dumped: $@ >>";
+}
+
+sub _stringify {
+ (my $__, local $noticks) = @_;
+ for ($__) {
local($v) ;
my $tick = $tick;
}
$_ = uniescape($_);
s/([\200-\377])/'\\'.sprintf('%3o',ord($1))/eg if $quoteHighBit;
- ($noticks || /^\d+(\.\d*)?\Z/)
+ return ($noticks || /^\d+(\.\d*)?\Z/)
? $_
: $tick . $_ . $tick;
+ }
}
# Ensure a resulting \ is escaped to be \\
$sp = " " x $s ;
$s += 3 ;
+ eval {
# Check for reused addresses
if (ref $v) {
my $val = $v;
print( (' ' x $s) . "FileHandle({$v}) => fileno($fileno)\n" );
}
}
+ };
+ if ($@) {
+ print( (' ' x $s) . "<< value could not be dumped: $@ >>\n");
+ }
+
+ return;
}
sub matchlex {