[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Omaha.pm] Pulling in a hash via "exec"...FAIL



I've got one program that generates a hash and then uses Data::Dump to write this structure to a text file:
printf FILE Data::Dumper->Dump(\%fields],['fields']);

The resulting file contains this:
--- begin contents ---
$fields = {
  'FIELD1' => {
                 FIRSTNAME => 'Joe',
                 LASTNAME => 'Smith'
  }
}
--- end contents ---

Unfortunately, when I try to use "eval" to pull this hash variable construct into a second running process:
--- begin contents ---
sub retrieve_fields {
        my ( $file )=@_;
        my %fields;
        open(FILE, $file)
        {
                local $/;
                eval <FILE>;
        }
        return %fields;
}
--- end contents ---

When I run the second program, perl dies on the "eval" line with this error:
Variable "$fields" is not imported at (eval 125)[testprog.pl:33] line 1, <FILE> chunk 1.

The odd thing is if the Data::Dump file is changed to "%fields = ( ... )" then the "eval" works!?!?

I've found some notes about using "our" and "use vars qw(...)".  Anyone else have any suggestions?

Dan

--
"Quis custodiet ipsos custodes?" (Who can watch the watchmen?) -- from the Satires of Juvenal
"I do not fear computers, I fear the lack of them." -- Isaac Asimov (Author)
** *** ***** ******* *********** *************