NAME
Data::Dumper::UnDumper - load Dumper output including $VAR1 refs
SYNOPSIS
Load in a Data::Dumper output via eval, including supporting $VAR1
style references etc as emitted if you don't set the Purity
option:
use Data::Dumper::UnDumper;
my $complex_ref = { ... };
my $dumped = Data::Dumper::Dumper($complex_ref);
my $undumped = Data::Dumper::UnDumper::undumper($dumped);
DESCRIPTION
Firstly, a safety warning: loading Data::Dumper output, which is designed to be eval
ed, is a big safety risk if the data comes from an untrusted source. It's evaled as Perl code, so it can do anything you could write a Perl program to. Future versions of this module may use Safe to mitigate that risk somewhat, but it's still there - to support object references, bless
would have to be allowed.
So, given the choice, what should you use instead? Any of the many serialisation options that don't serialise as code - for e.g. JSON, YAML, etc.
I wrote this module, though, because I didn't have a choice - I was receiving Data::Dumper output which had been written to a log in the past by some code, without using the <$Data::Dumper::PURITY
> setting, so it included $VAR1
references, including re-used JSON::PP objects.
This has been lightly tested with the default output from Data::Dumper::Dump()
. It's quite likely that you could have Data::Dumper generate output this will not handle by setting some of the dumping options.
SUBROUTINES
undumper
Given the output of Data::Dumper's Dumper
/ Dump
method, "undump" it, deserialising it back in to a Perl scalar/object, handling `$VAR1` references.
SEE ALSO
- Data::Undump
-
Doesn't support cyclical references, blessed objects.
- Data::Undump::PPI
-
Safer as it uses PPI not
eval
, but doesn't support blessed objects or refs. - plain old eval
-
For simple Data::Dumper output you can of course just
eval
it, but that falls down when the output includes references to other parts of the object e.g.'foo' => $VAR1->{'bar'}
AUTHOR
David Precious (BIGPRESH), <davidp@preshweb.co.uk>
COPYRIGHT AND LICENCE
Copyright (C) 2023-2024 by David Precious
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.