http://qs1969.pair.com?node_id=294040


in reply to Data::Dumper and eval

Checking for $@ after both evals will reveal:
Global symbol "$VAR1" requires explicit package name at (eval 1) line 1.

To fix you can prefix your eval'd code with a 'my':
use strict; use Data::Dumper; { my $hashref = { "aaa" => 1, "bbb" => 2, "ccc" => 3, }; print "hashref : " . Dumper($hashref); my $dumped = Dumper($hashref); print "Dumped: $dumped\n"; my $restored = eval "my $dumped"; warn "\$@ = $@\n"; print "restored: " . Dumper($restored); my $test_2 = eval("my ".Dumper($hashref)); warn "\$@ = $@\n"; print "test_2: " . Dumper($test_2); }