I think you're confusing "smart" with "working" since it's expected that you can just
eval the code that
Data::Dumper puts out. If you really feel burned by it, why not substitute? There's nothing to say you couldn't do this:
package My::Dumper;
use base 'Data::Dumper';
sub Dumper
{
my $result = Data::Dumper::Dumper(@_);
$result =~ s/\\\\/\\/g;
}