in reply to unable to eval dumped hash

You have already discovered that you need the EXPR (not BLOCK) form of eval. With this change, your original idea of removing $VAR1 works fine.
use strict; use warnings; use Data::Dumper qw(Dumper); my $hash; { local $/; $hash = <DATA>; } #$hash = eval { $hash }; $hash = eval $hash ; print keys %$hash; # error (no more) __DATA__ #$VAR1 = { { 'blah.com' => [ '212.235.56.176' ], 'blah.org' => [ '212.235.56.176' ], 'www.boo.org' => [ '212.235.56.176' ], };

OUTPUT:

C:\Users\Bill\forums\monks>perl 11116141.pl blah.comblah.orgwww.boo.org
Bill