Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Having problems using eval()

by TASdvlper (Monk)
on May 20, 2004 at 16:11 UTC ( [id://354989]=perlquestion: print w/replies, xml ) Need Help??

TASdvlper has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I'm storing a hash table, as a scalar, in a single database record. I converted the hash to a scalar using Data::Dumper.

I'm trying to retrieve that record and convert it back to a hash, but am having problems.

if (defined $ref) { print "REF: $ref <br> \n"; $HASH = eval ($ref); %data = %$HASH; } else { %data = {}; } print "MYHASH: $_ $data{$_} <br> \n" for (sort keys %data); +exit;
Here is the output:
REF: $VAR1 = { 'KeyWordMapper:Modify' => 'notify', 'DispatchHistory:Re +store' => 'notify', 'BuildReport:CSETicketSummary' => 'notify', 'Agen +da:StatusRestore' => 'notify', 'BuildReport:SQATestDetails' => 'notif +y', 'Agenda:Create' => 'notify' };
%data seems to be empty and I don't know why. Any thoughts ???

Replies are listed 'Best First'.
Re: Having problems using eval()
by halley (Prior) on May 20, 2004 at 16:20 UTC
    1. After an eval, check $@ for any problems evaluating the string.

    2. To empty a hash, %data = (), not {}.

    --
    [ e d @ h a l l e y . c c ]

      @$ did the trick. Thanks.
Re: Having problems using eval()
by Belgarion (Chaplain) on May 20, 2004 at 16:22 UTC

    Rather than reinventing the wheel, I would recommend you investigate the FreezeThaw module. It does exactly what you require.

      Using Data::Dumper for data storage is hardly reinventing the wheel. Its very usefull when you want to be able to actualy see the data and manipulate it by hand.

      ___________
      Eric Hodges

        You are absolutely correct, except the OP stated that they used Data::Dumper to convert their hash into a scalar to store it in a database record, and then wanted to turn the scalar back into the hash. It does not appear that the OP wanted to see or manipulate the data beyond converting to and from a database back-end. For this purpose, using FreezeThaw would be a better choice rather than hand rolling your own solution.

        Thank you for your comment though! More points of view are always helpful.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://354989]
Approved by Old_Gray_Bear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2024-04-24 10:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found